题目
在N个数中找出其和为M的若干个数,问有多少种方案
分析
动态规划,01背包
代码
#include <cstdio>
int n,m,f[100001];
int in(){
int ans=0; char c=getchar();
while (c<48||c>57) c=getchar();
while (c>47&&c<58) ans=ans*10+c-48,c=getchar();
return ans;
}
int main(){
n=in(); m=in(); f[0]=1;//0只有一种方案
for (int i=1;i<=n;i++){
int x=in();
for (int j=m;j>=x;j--) f[j]+=f[j-x];
}
return !printf("%d",f[m]);
}