动态规划--买书(背包方案数)
2017-04-05 20:26
274 查看
题目大概:
用n元买书,书有10 20 50 100元的。问有多少种买书方案。思路:
这个题是完全背包问题的方案数问题,即每一样物品是可以无限制的拿取的。状态h[i]是i元的方案数,这个题和数字组合非常相似。把完全背包问题变换一下就可以了。
即把完全背包的两层循环里的max(h[i],h[i-a[j]])改成h[i]+h[i-a[j]]。
感想:
无。代码:
#include <iostream> using namespace std; int main() {int n; int a[5]={0,10,20,50,100},h[1001]={0}; h[0]=1; cin>>n; for(int i=1;i<=4;i++) for(int j=a[i];j<=n;j++) {h[j]+=h[j-a[i]]; } cout<<h[n]; return 0; }
相关文章推荐
- 动态规划(背包问题):HRBUST 1377 金明的预算方案
- 动态规划之背包问题及输出背包具体方案
- 动态规划--数字组合(背包方案数)
- Sicily 1346 金明的预算方案 (SOJ 1346) 【DP 动态规划-背包问题】
- Vijos P1313 金明的预算方案(动态规划,有依赖的背包)
- 普及练习场 动态规划的背包问题 金明的预算方案
- 金明的预算方案(动态规划)(有依赖的背包)
- 动态规划-背包问题
- 动态规划——背包问题
- 动态规划-背包问题
- 动态规划 0-1背包问题和时间轴问题
- 01背包-动态规划-Java实现
- 动态规划之完全背包问题杭电1114
- 多重背包(动态规划)
- 算法导论16.2-2--动态规划(0-1背包问题)
- [动态规划]背包九讲自解
- 动态规划(多重背包)
- 洛谷P1064 金明的预算方案(01背包变形)
- POJ 1276 Cash Machine -- 动态规划(背包问题)
- 网易双核CPU,0-1背包,动态规划,将数组分为两部分,使得这两部分和最接近,