有不同重量的物品,只要找到一种方案恰好装满背包即可 #define N 7 #define S 15 int w[N+1]={0,1,4,3,4,5,2,-100}; int knap(int s,int n); int main(int argc, char* argv[]) { if (knap(S,N)) printf("/nOK!/n"); else printf("/nNO!/n"); return 0; } int knap(int s,int n) { if (s==0)return 1; if (s<0 || n<1)return 0; if(knap(s-w[n],n-1)){ printf("%4d",w[n]); return 1; } return knap(s,n-1); }