在vc6.0中调试通过
#include "stdio.h"
#include "stdlib.h"
int c1=1,c2=1,n=1;
int w[11],a[11],max=0;
void checkmax(){
int i,weight=0;
for(i=1;i<=n;i++)
if(a[i]==1)weight=weight+w[i];
if(weight>max&&weight<=c1)
max=weight;
}
void search(int m){
if(m>n)checkmax();
else
{
a[m]=0;search(m+1);
a[m]=1;search(m+1);
}
}
void print()
{
int sum=0;
int i;
for(i=1;i<=n;i++)
sum=sum+w[i];
if((sum-max)<=c2)
printf("yes!/n");
else printf("no/n");
}
void main(){
while(c1!=0&&c2!=0&&n!=0)
{
scanf("%d%d%d",&c1,&c2,&n);
for(int i=1;i<=n;i++)
scanf("%d",&w[i]);
if(c1!=0&&c2!=0&&n!=0)
{
search(1);
print();
}
}
}