for(int i=1;i<=t;i++)
{
int m[1000];
int s[1000];
int a,b;
scanf("%d",&a);
scanf("%d",&b);
//马丁
for(int q=1;q<=a;q++)
{
int c;
scanf("%d",&c);
m[q]=c;
}
//食物价格
for(int w=1;w<=b;w++)
{
int d;
scanf("%d",&d);
s[w]=d;
}
sort(m+1,m+a+1);
reverse(m+1,m+a+1);
for(int e=1;e<=b;e++)
{
int flag=0;
int jk=s[e];
for(int f=1;f<=a;f++)
{
s[e]=jk;
if(s[e]>=m[f])
{
s[e]=s[e]-m[f];
//printf("%d\n",s[e]);
if(s[e]==0){flag=1;break;}
}
for(int g=f+1;g<=a;g++)
{
if(s[e]>m[g]){s[e]=s[e]-m[g];}
else if(s[e]==m[g]){s[e]=s[e]-m[g];}
//printf("%d\n",s[e]);
if(s[e]==0){flag=1;break;}
}
if(s[e]==0){break;}
}
if(flag==1){printf("yes\n");}
else{printf("no\n");}
}
}
}
现在自己测了很多数据都对但是wa,我想知道问题出现在哪
这就是钱币和邮票的问题嘛
面值10,5,2,1几种钱币,你要用来买东西,那就要遍历然后去匹配啊,不能用贪婪算法的
一个价值11块的东西就是要10+1,你用10+5无论如何凑不出11来
baidu动态规划背包