描述
新的学习开始了,小明来到书店采购辅导书。小明有M元,书店有N种不同的书,第i种书卖Ai元,假设小明每种书最多最能买1本,请问小明有多少种不同的买书方案?
输入描述
第一行有两个整数N和M。(1=<N<=100,1<=M<=10000)。
第二行有N个整数ai(1<=ai<=1000)。
输出描述
输出一个整数,代表买书的方案数(请注意:本题的计算结果可能会超过int)
用例输入 1
4 4 1 1 2 2
用例输出 1
3
来源
动态规划 背包问题
代码
#include<bits/stdc++.h>
using namespace std;
long long n,maxn,dp[100010],w;
int main(){
dp[0]=1;
cin>>n>>maxn;
for(int i=1;i<=n;i++){
cin>>w;
for(int j=maxn;j>=w;j--){
dp[j]+=dp[j-w];
}
}
cout<<dp[maxn];
return 0;
}