再看看这个
#include<stdio.h>
#include<stdlib.h>
int comp_ints(const void *p1,const void *p2)
{
int i1=*(int *)p1;int i2=*(int *)p2;
return i1-i2;
}
int main(void)
{
int i,j,j1,j2,n,m,t,isture,sum,l,count=0;
int a[1002];
scanf("%d",&t);
for(i=0;i<1002;i++)
a[i]=0;
for(i=0;i<t;i++)
{
isture=0;count=0;
sum=0;
scanf("%d%d",&n,&m);
for(j=0;j<n;j++)
scanf("%d",&a[j]);
qsort (a,n,sizeof(int),comp_ints);
n=n-1;
l=n;
for(j2=n;j2>=0;j2--)
{
l=j2;
while(l!=-1)
{
sum=0;
if(l!=j2)
sum+=a[n];
for(j1=l;j1>=0;j1--)
{
sum=sum+a[j1];
if(sum>=m)
{
if(sum==m)
{
isture=1;
break;
}
else
{
sum=sum-a[j1];
}
}
}
if(isture==1)
break;
l--;
}
if(isture==1)
break;
}
if(isture==1)
printf("yes\n");
else
printf("no\n");
}
return 0;
}