币值最大问题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代码 币值最大化
本文URL:http://pwwzsj.com/article/ddpjosp.html