AcWing 1023. 买书(完全背包问题)
原题链接
简单
作者:
林小鹿
,
2020-10-08 19:59:43
,
所有人可见
,
阅读 405
C++ 代码
/*
完全背包类型:每种物品可用无限次
背包总体积V:小明手里的n元钱
物品的个数N:四本书
每种物品的体积v: 书的价格10元,20元,50元,100元
状态表示:f[i][j] 从前i个物品中选,物品的总体积恰好为j的所有选法集合的方案数
状态计算:f[i][j]=f[i-1][j]+f[i][j-v]
*/
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=1010;
int f[N];
int a[5]={0,10,20,50,100};
int main()
{
int n;
cin>>n;
f[0]=1 ; //初始化 f[0][0]=1 啥也不选也是一种方案
for(int i=1;i<=4;i++)
{
for(int j=a[i];j<=n;j++)
f[j]+=f[j-a[i]];
}
cout<<f[n]<<endl;
return 0;
}