题目:货币系统
思路:
dp。复杂度迷?
类似于完全背包吧
f[j]表示构成面额j的方案数。
转移方程:f[j]+=f[j-k*a[i]]
代码:
#include<bits/stdc++.h>
using namespace std;
#define maxv 100000
long long f[maxv+5]={0},a[maxv+5];
int v,n;
int main() {
scanf("%d%d",&n,&v);
f[0]=1;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
for(int j=v;j>0;j--){
for(int k=1;j-k*a[i]>=0;k++){
f[j]+=f[j-k*a[i]];
}
}
}
printf("%lld",f[v]);
return 0;
}