$\LARGE\color{orange}{刷题日记(算法提高课)}$
这道题实际上是完全背包求方案数
这种求方案数的问题,我们记得把 $f[0]=1$ 初始化一下就好
最后的结果会非常大,要记得开 long long
完整代码:
#include <iostream>
using namespace std;
const int N = 3010;
typedef long long LL;
LL f[N];
int n, m;
int main()
{
cin >> n >> m;
f[0] = 1;
for(int i = 1; i <= n; i++)
{
int v;
cin >> v;
for(int j = 1; j <= m; j++)
if(j >= v) f[j] += f[j - v];
}
cout << f[m] << endl;
return 0;
}