动态规划简单例子之硬币数量
2015-11-08 11:26
274 查看
如果我们有面值为1元、2元和5元的硬币若干枚,如何用最少的硬币凑够n元?
这是典型的动态规划的问题,我们可以把问题分解为若干之问题,设pi为凑够i元所需的最少硬币的个数。那么当i > 5时有递推方程
pi = min(pi-1,pi-2,pi-5)+1。由此递推方程就可以得出程序如下:
这是典型的动态规划的问题,我们可以把问题分解为若干之问题,设pi为凑够i元所需的最少硬币的个数。那么当i > 5时有递推方程
pi = min(pi-1,pi-2,pi-5)+1。由此递推方程就可以得出程序如下:
#include<iostream> using namespace std; int Min(int a,int b,int c) { int m = -100; a < b ?(m=a):(m = b); if(m < c) return m; else return c; } int Coin(int n) { int i=0; int q; int *p = new int[n+1]; for(i = 0;i<= n;i++) p[i] = 0; p[0] = 0; p[1] = 1; p[2] = 1; p[3] = 2; p[4] = 2; p[5] = 1; for(i=5;i<=n;i++) p[i] = Min(p[i-1],p[i-2],p[i-5])+1; return p ; } int main(void) { int n; cin >> n; int res; res = Coin(n); cout << "result " << res << endl; return 0; }
相关文章推荐
- Android碎片和活动之间进行通信
- TEB结构思考
- swift设置导航栏的颜色和字体
- 对查询结果进行分页
- Java 互联网工程师要具备哪些技能或技术?
- Android 选择图片剪切上传
- JAVA--成员内部类 局部内部类 匿名类
- 设计模式小结
- 如何从官网下载Chrome浏览器离线安装包
- ceph osd 更换硬盘记录
- poj1947 ----- 树形DP - 分组背包做法
- [读书笔记]高性能js-DOM优化
- UVALive 3027 Corporative Network (带权并查集)
- Python实现模拟时钟代码推荐
- UVALive 3027 Corporative Network (带权并查集)
- 不相交集的求并算法(按集合大小求并+按高度求并)
- (算法)游戏必胜策略
- 如何向android的framework里添加
- ios开发推荐两个好用的xcode插件,提供下载链接
- hdu5113 贪心搜索 2014ACM/ICPC亚洲区北京站 B题 Black And White