贪心算法实例(二):钱币找零问题
来源:互联网 发布:oracle数据库的端口号 编辑:程序博客网 时间:2024/05/01 23:26
假设1元、2元、5元、10元、20元、50元、100元的纸币分别有c0, c1, c2, c3, c4, c5, c6张。现在要用这些钱来支付K元,至少要用多少张纸币?
用贪心算法的思想,很显然,每一步尽可能用面值大的纸币即可。在日常生活中我们自然而然也是这么做的。
在程序中已经事先将Value按照从小到大的顺序排好。
具体实现代码如下 所示:
/**
*@Title: LightMoney.java
*@Package greedyalgorithm
*@Description: TODO
*@author peidong
*@date 2017-5-16 上午9:13:12
*@version V1.0
*/
packagegreedyalgorithm;
/**
* @ClassName: LightMoney
* @Description: 钱币找零问题
* @date 2017-5-16 上午9:13:12
*
*/
publicclass LightMoney {
public static int N = 7;
public static int num = 0;
public static int[] count = {3, 0, 2, 1,0, 3, 5};
public static int[] value = {1, 2, 5, 10,20, 50, 100};
public static int moneyNum(int money){
//从大到小计算
for(int i = N-1; i >= 0; i--){
int temp =min(money/value[i], count[i]);
money = money -temp*value[i];
num+= temp;
}
if(money > 0)
num = -1;
return num;
}
/**
* @Title: min
* @Description: TODO
* @param i
* @param j
* @return
* @return int
* @throws
*/
private static int min(int i, int j) {
// TODO Auto-generated method stub
if(i <= j)
return i;
else
return j;
}
/**
*@Title: main
*@Description:测试用例
*@param args
*@return void
*@throws
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int money = 254;
int res = moneyNum(money);
if(res == -1)
System.out.println("No");
else
System.out.println(res);
}
}
- 贪心算法实例(二):钱币找零问题
- 贪心算法之钱币找零问题
- 贪心算法_钱币找零
- 贪心之钱币找零问题
- 钱币找零问题
- 贪心算法的找零问题
- 硬币找零(贪心算法)
- 贪心算法算法导论 找零问题
- 使用贪心算法实现硬币找零问题
- 贪心算法实现找零问题求解
- 贪心算法解硬币找零问题
- 算法第四节:贪心算法解决“超市找零方案”问题
- 用贪心法找零问题
- 算法导论第十六章贪心算法-思考题16-1找零问题
- 从硬币找零问题:看分治/动态规划/贪心算法的区别与联系
- JS贪心解法入门:找零问题
- 钱币组合问题(二):(每种硬币次数受限)
- 动态规划算法求解硬币找零问题(Java)
- centos7 安装 python3 mysqlclient 小记
- 数组、链表、栈、队列的实现。
- Linux下常用的C/C++开源Socket库
- ExpandableListView(手风琴)(1)---BaseExpandableListAdapter
- 【HDU 1109 Run Away 模拟退火算法】
- 贪心算法实例(二):钱币找零问题
- java 代码初始化数据库表结构,存储过程和函数的方法
- Qt中可以对图片镜像旋转
- 欢迎使用CSDN-markdown编辑器
- 膨胀的牛牛
- ios 用于调试的语句,在代码中添加容易定位位置
- Sybase修改interfaces文件(ip、端口、服务名等)
- (七)路由协议-TCP/IP--图解TCP/IP读书笔记
- session