求背包问题的思路!
											设有一个背包可以放入的物品重量为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;
}首先我是想问大家思路的,我真的想不出来了,循环式没法了。但求到了段代码有 看不懂。所以大家要么讲下代码或给个思路。。!!!
											
	    

