题解:本题主要考查背包的转换。由题知这是一个完全背包求方案数的问题,网上有很多教程了可以看看。
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
int v,n,i,j;
long long a[30],dp[30005];
int main()
{
cin>>v>>n;
for(i=1;i<=v;i++)
{
cin>>a[i];
}
dp[0]=1;
for(i=1;i<=v;i++)
{
for(j=a[i];j<=n;j++)
{
dp[j]+=dp[j-a[i]];
}
}
cout<<dp[n];
return 0;
}