设有各不同面值人民币若干,编写一个java程序,对任意输入的一个金额,给出能组合出这个值的最佳可能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设有各不同面值人民币若干,编写一个java程序,对任意输入的一个金额,给出能组合出这个值的最佳可能相关的知识,希望对你有一定的参考价值。

要求使用的币值个数最少。
例如,给出1.46元,将得到下列结果:
1.46元=
1元 1个
2角 2个
5分 1个
1分 1个
(希望用java流程控制语句做,各位大神帮帮忙,急用!!!)

public class Money

public static void main(String[] args)
// 所有金额以分为单位
int money = 146;

// 所有钞票面以分为单位,从大到小排列,10000是100块,20是2角
int[] rmbs = 10000, 5000, 2000, 1000, 500, 100, 50, 20, 10, 5, 2, 1 ;

// rest是剩余的钱,刚开始为所求的钱,随便选钱rest越变越小,直到为0
int rest = money;
for (int rmb : rmbs)
// num为钞票个数
int num = rest / rmb;
if (num > 0)
rest = rest - rmb * num;

System.out.println("钞票面额(分):" + rmb + " 个数:" + num + " 还差多少钱(分):" + rest);

// 钱凑齐了,程序结束
if (rest == 0)
System.exit(1);

// end if num
// end for rmb


参考技术A 其实很简单 。你定义好元 角 分的值 然后一层一层取模 就行了 就这么简单。
比如54.53元
你定义了 50元 1元 5角 1分
取50元的模 等于1 剩下4.53元 取1元的模 等于4 剩下0.53 取5角的模等于1 剩下0.03 取1分的模 等于3 一直取模到0为止
参考技术B 核心是整除的思想。

以上是关于设有各不同面值人民币若干,编写一个java程序,对任意输入的一个金额,给出能组合出这个值的最佳可能的主要内容,如果未能解决你的问题,请参考以下文章

透析递归应用-换零钱

澳大利亚币一共有几种面值

用Java编写程序,对分行输入的若干字符串按字典序(由小到大)进行排序并输出。

贪心算法中,通常会让证明贪心选择性,请问,证明贪心选择性的实质是啥?怎样说明一个问题具有贪心选择呢

九度-题目1072:有多少不同的面值组合?

MT227换钱的总数