硬币找零问题 - 动态规划
来源:互联网 发布:mac版unturned怎么汉化 编辑:程序博客网 时间:2024/05/17 05:52
硬币找零问题:要找开money元钱,需要的最小硬币数
question: 硬币面额:CoinValues[], coinNum, 需要找零钱:money
output: 从1 -- money对应需要的硬币数目coinsUsed[]
动态规划思想:
coinsUsed[0] = 0;
coinsUsed[i] = Min { coinsUsed[i-CoinValues[j]] +1 } [j: 1 to coinNum],if i >= CoinValues[j]
//保存要找开 i 元钱,需要的最小硬币数量
例如:硬币:2, 5, 6, 8, 1 找钱money:10
i = 1时,对j从1 to coinNum遍历,if i>=CoinValues[j],则求Min{coinsUsed[i-CoinValues[j]] +1}
即coinsUsed[1] = coinsUsed[i-CoinValues[4]] + 1 = coinsUsed[0] + 1 = 1
i = 2时,coinsUsed[2] = Min {coinsUsed[2-CoinValues[0]]+1, coinsUsed[2-CoinValues[4]]+1}
= Min {coinsUsed[0]+1, coinsUsed[1]+1} = 1
...
i = 8时,coinsUsed[8] = Min {coinsUsed[8-CoinValues[j]]+1} [j From 0 To coinNum(4)] = 1
int main(){ int coinValue[] = {2, 5, 6, 8, 1}; int coinNum = sizeof(coinValue)/sizeof(int); int money = 20; int coinsUsed[money]; makeChange(coinValue, coinNum, money, coinsUsed); return 0;}void makeChange(int coinValues[], int coinNum, int money, int coinsUsed[]){ coinsUsed[0] = 0; for (int cents = 1; cents <= money; cents ++) { int minCoins = INF; for (int kind = 0; kind < coinNum; kind ++) { if (coinValues[kind] <= cents) { int temp = coinsUsed[cents - coinValues[kind]] + 1; if (temp < minCoins) { minCoins = temp; } } } coinsUsed[cents] = minCoins; cout << "面值为 " << cents << " 的最小硬币数 : " << coinsUsed[cents] << endl; }}
Reference Url:
http://blog.csdn.net/JarvisChu/article/details/6056963#
http://blog.163.com/huang_zhong_yuan/blog/static/174975283201110604819214/
http://58.20.53.45/files/files_upload/content/material_177/content/002001/file_2.htm
- 硬币找零问题 - 动态规划
- 硬币找零问题 动态规划问题
- 硬币找零问题(动态规划)
- 硬币找零问题(动态规划求解)
- 最少硬币找零问题-动态规划
- 最少硬币找零问题-动态规划
- 动态规划入门之硬币找零问题
- 动态规划算法求解硬币找零问题
- 动态规划之最少硬币找零问题
- 硬币找零(动态规划)
- 动态规划求解硬币找零问题——Java实现
- 动态规划算法求解硬币找零问题(Java)
- 动态规划算法求解硬币找零问题(Java)
- JAVA动态规划(一)--最少硬币找零问题
- 动态规划算法求解硬币找零问题 (2)
- 动态规划算法求解硬币找零问题(1)
- 人民币找零 vs 硬币问题 贪心 vs 动态规划
- 动态规划算法求解硬币找零问题(Java)
- OSX:两个脚本使用的GUI工具(AppleScriptLibraries和CocaDialog)
- 看了一上午的文档
- Javascript入门
- 判断当前文件是否打开/关闭的源码
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- 硬币找零问题 - 动态规划
- 申请三维数组
- 重温C语言 - 基本特性的实现
- books to read step by step
- HTML 5 <input> placeholder 属性 完美兼任ie
- oracle10g建表空间和修改oracle字符和删除表空间和用户
- usb-skeleton.c
- 关停部分项目,盛大创新院调整,微酷将遭波及
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)