题目:https://www.luogu.org/problemnew/show/P1474
完全背包,注意方案计数的方法。
代码如下:
#include<iostream>
#include<cstdio>
using namespace std;
long long v,n,w[30],f[30005];
int main()
{
scanf("%lld%lld",&v,&n);
for(int i=1;i<=v;i++)
scanf("%lld",&w[i]);
for(int i=1;i<=v;i++)
{
if(w[i])f[w[i]]+=1;
for(int j=w[i];j<=n;j++)
f[j]+=f[j-w[i]];
// f[j]=max(f[j],f[j-w[i]]+1);
}
printf("%lld",f[n]);
return 0;
}