admin 管理员组

文章数量: 1087649

蓝桥杯算法训练VIP

题目

题目链接

题解

实现题。


比较简单的。

算是一个告诉你贪心思路的贪心题吧。
尽可能的做编号小的菜,每个菜受限于每一种食材,用拥有的每一种食材的数量除以菜品所需的此食材的数量,就是这个菜品如果只受限于此食材最多能做多少道,但是由于菜品受限于四种食材,因此取四种食材中商最小的就是这个菜品最多做的道数。
算出来第一道菜的道数,用拥有的减去做第一道菜消耗的,再去重复上面的步骤计算第二道菜的道数,以此类推。
注意分母为零的情况,即某个菜品不需要某种食材时分母会为0。

每个菜品对于每一种食材的需求量的保存方式有点类似于蓝桥杯中的那种开关灯的题。

代码

#include<bits/stdc++.h>
using namespace std;int menu[5][4] = {{2, 1, 0, 2},{1, 1, 1, 1},{0, 0, 2, 1},{0, 3, 0, 0},{1, 0, 0, 1}};
int a[4];int main()
{for(int i = 0;i < 4;i ++) cin>>a[i];for(int i = 0;i < 5;i ++) {int num = 100;for(int j = 0;j < 4;j ++) if(menu[i][j]) num = min(num, a[j]/menu[i][j]);for(int j = 0;j < 4;j ++) a[j] -= num*menu[i][j];cout << num << endl;}return 0;
}

本文标签: 蓝桥杯算法训练VIP