币值最大问题java代码 币值最大化
设有各不同面值人民币若干,编写一个java程序,对任意输入的一个金额,给出能组合出这个值的最佳可能
public class Money {
青山ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
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
}
}
java分治法解决币值最大化问题,伪代码也行
这你看怎么个分法,有什么要求,族中要是没要求那就太多了。
比兆碧山如说:1000个1毛,500个2毛,100个1块都行;
这是单个的,还有5块、10块、20块等等。
只要加起来等于100就算。慧陵
JVAV简单编程 跪求大神出手
给你思路,代码自己练习写写吧
1.
产生随机数的函数不必说了.
规定要100个随机数
你就做个循环,循环100次,每次都产生一个0-99的随机数,产生完如果你最后还要看这些随机数字,就用一个数组把数字存起来.
然后设置3个变量
一个用来记录最小值,初始值99,如果循环过程中发现新产生的随机数仿裤比该变量小,就把这个变量赋值成刚产生的随机数.
一个用来记录最大值,初始值0,其他跟上面那个对比就知道局卜了.
一个记录超过50的数字个数,初始值0,判断当前随机数如果大于50 就自加1
于是循环完你要的结果就有了桐大穗.
2.
这无非是一个求余和商的问题.
我国人民币种 目前有 1分,2分5分,1角,2角,5角,1元,2元,5元,10元,20元,50元,100元.
输入金额后,从大到小来除,来求余.
比如说234.5元
200/100 = 2 .......34.5
34.5/50 = 0 ......34.5
34.5/20 = 1 ......14.5
14.5/10 = 1 ......4.5
.....
就这个思路. 为了程序方便你可以把人民币的面值存到一个数组里,然后经过 数组长度 那么多次的循环,进行下面步骤:
①除以数组中的数值(得到整数),将得数存在另一个数组中.
②钱数 减去 面值×①中的商 即为余数. 钱数赋值成该余数.
③循环.
最后输出另一个数组里得到的每次的商就可以了.
比如我说的例子,输出就是 2个100, 1个20,1个10,4个1,一个0.5,商是0的忽略掉就行了.
文章标题:币值最大问题java代码 币值最大化
路径分享:http://cdiso.cn/article/ddpjosp.html