题目大意:
给你n种维生素,每只牛每天摄入的维生素必须大于等于这n种维生素的量。再让你输入一个数m,代表有m种不同的食物。里面含有的维生素的量。然后要求最少吃哪几种食物可以满足牛的维生素量。如果食物相同,则输出字典序最小的。
解题思路:
最多就15种食物,直接暴力dfs吧。最多也就2^15种状态。不会超时的。。暴力出来的结果就是字典序最小的。
代码:
/*
ID:yuqichu1 / cchun
PROB:holstein
LANG:C++
*/
#include
#include
const int MAX=55;
using namespace std;
int must[MAX],have[MAX][MAX];
int num,n,now[MAX],path[MAX],Min=0x7fffffff;
int ans_p[MAX];
void dfs(int deep,int count)//全部搜完,反正最小的那个就是答案了,接下去的最小都不刷新第一个最小
{
int i;
if(deep==n)//结束
{
for(i=0;i>num;
for(i=0;i>must[i];
cin>>n;
for(i=0;i>have[i][j];
dfs(0,0);
cout<