题目:数字组合
思路:就是个01背包
代码:
#include<bits/stdc++.h>
using namespace std;
#define maxv 1000
long long f[maxv+5]={0};
int 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>=a[i];j--){
f[j]+=f[j-a[i]];
}
}
printf("%lld",f[v]);
return 0;
}