[置顶] 【动态规划】最小硬币面值组合
2015-10-30 12:55
246 查看
问题
给出硬币种类,及要组合的sum,求用最少的硬币数目到达sum。如:硬币种类1,5,8 sum为20,则最少的硬币数目为5555。
解析
动态规划解法:dp[i]表示用N种硬币组合成i大小的最少硬币数目。
状态转移方程:
dp[i] = min{dp[i-arr[j]] + 1 | 0<=j<=arr_len && arr[j]<=i , dp[i]}.
dp[0] = 0;
实现
memset(dp, INF, sizeof(dp)); dp[0] = 0; //初始条件 for(i = 1; i <= sum; ++i) { for(j = 0; j <= arr_len; ++j) { if(arr[j] <= i && dp[i - arr[j]] + 1 < dp[i]) dp[i] = dp[i - arr[j]] + 1; } }
相关文章推荐
- Lua - lstring
- 随笔
- Linux正确的关机方法
- object_getIvar
- Collection of Interesting Articles
- textarea在使用上的坑
- 帝国CMS 灵动标签排除头条、推荐、置顶等信息调用
- 进程与线程的一个简单解释
- [2007]:平方和与立方和
- OpenCV2.4.9 For Android + Android Studio (with gradle)配置教程
- BLE GAP 相关知识
- Python文件夹与文件的操作
- Ajax (jquery)实现智能提示搜索框(in Django)
- IIS7中配置集成模式,使其可使用httpModules、httpHandlers【转】
- 子线程与主线程通信之Thread-Handler-Message
- web.config clientCachel
- 我的观念
- 【转】用JSON报的一个错误java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeExcept
- 10个可创建交互式地图的免费JavaScript工具
- Java Web开发的轻便架构Tapestry5---页面渲染之框架职责