思路
dp.
状态转移方程和别的题目不一样,我们需要求宣和不选这道菜的方案总数,不选的方案总数为dp[j],选的方案总数为dp[j-v[i]],所以dp[j]=dp[j]+dp[j-v[i]].这道题也要初始化dp[0]=1;
代码
#include<bits/stdc++.h>
#define endl '\n';
using namespace std;
int v[130];
int T,n,dp[11100];int w[130];
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>T;
for(int i=1;i<=n;i++){
cin>>v[i];
}dp[0]=1;
for(int i=1;i<=n;i++){
for(int j=T;j>=v[i];j--){
dp[j]+=dp[j-v[i]];
}
}cout<<dp[T];
return 0;
}