求背包问题的思路!
设有一个背包可以放入的物品重量为S,现有n件物品,重量分别是w1,w2,w3,…wn。 问能否从这n件物品中选择若干件放入背包中,使得放入的重量之和正好为S。
input
20 5
1 3 5 7 9
Sample Output
YES
程序代码:
#include"iostream" using namespace std; int a[1000]; int f(int x,int y) { if(x==0) return 1; if(x<0||(x>0&&y<1)) return 0; if(f(x-a[y],y-1)) return 1; return f(x,y-1); } int main() { int i,s,n; while(cin>>s>>n) { for(i=1;i<=n;i++) { cin>>a[i]; } if(f(s,n)) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }首先我是想问大家思路的,我真的想不出来了,循环式没法了。但求到了段代码有 看不懂。所以大家要么讲下代码或给个思路。。!!!