动态规划 18题
2017-04-17 12:48
211 查看
18:买书
描述小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元。
问小明有多少种买书方案?(每种书可购买多本)
输入一个整数 n,代表总共钱数。(0 <= n <= 1000)输出一个整数,代表选择方案种数样例输入
样例输入1:20样例输入2:15样例输入3:0
样例输出
样例输出1:2样例输出2:0样例输出3:0
2.解题思路:
这道题为完全背包问题,可以用一个数组表示对应下标的方案种类数,再用一个数组储存不同的面值,然后相加。3.代码:
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int n; int w[5],f[1005]; int main() { while (cin>>n) { if (n==0) cout<<"0"<<endl; else { w[1]=10; w[2]=20; w[3]=50; w[4]=100; memset(f,128,sizeof(f)); f[0]=1; for (int i=1;i<=4;i++) for (int j=0;j<=n;j++) if (j-w[i]>=0) if (f[j]<0) f[j]=f[j-w[i]]; else f[j]+=f[j-w[i]]; if (f[n]<0) cout<<"0"<<endl; else cout<<f[n]<<endl; } } return 0; }
相关文章推荐
- 动态规划训练18 [免费馅饼 HDU - 1176 ]
- 动态规划(3)——算法导论(18)
- 动态规划18 丑数问题
- 动态规划练习--18(买书)
- NYOJ - 18 - The Triangle(动态规划--数字三角形)
- 100道动态规划——18 UVA 1336 Fixing the Great Wall 指标函数的分解,刷表法
- NYOJ 18 The Triangle (动态规划复习)
- 0_1 背包动态规划详解
- 动态规划--4.最优二叉查找树
- 很特别的一个动态规划入门教程
- 动态规划的一点理解
- 动态规划(3)饮料供货
- 动态规划解乘法表问题
- 动态规划之背包问题
- LeetCode 198 House Robber(简单的动态规划)
- 动态规划——入门篇
- 2.7动态规划的背包问题
- 动态规划入门(二)DP 基本思想 具体实现 经典题目 POJ1088 POJ1163 POJ1050
- DP动态规划问题(1)
- LeetCode总结 -- 一维动态规划篇