p1164小A点菜
小A点菜
这题真的没思路
01背包+加法
a[x]表示花x元的方案数目
状态转移方程
a[j]+=a[j-v[i]];
千万别忘了赋初值!!!
附代码
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int n,m; 5 int v[101000]; 6 int a[100001]; 7 int main() 8 { 9 int ans=0; 10 scanf("%d%d",&n,&m); 11 for(int i=1;i<=n;++i) 12 { 13 scanf("%d",&v[i]); 14 } 15 a[0]=1;//千万别忘了赋初值!!! 16 for(int i=1;i<=n;++i) 17 { 18 for(int j=m;j>=v[i];j--) 19 { 20 a[j]+=a[j-v[i]]; 21 } 22 } 23 cout<<a[m]; 24 return 0; 25 }