当前位置: 代码迷 >> J2SE >> java代码兑现1,2,5分拼凑一元的算法
  详细解决方案

java代码兑现1,2,5分拼凑一元的算法

热度:68   发布时间:2016-04-24 00:24:20.0
java代码实现1,2,5分拼凑一元的算法
多谢大神指教~

------解决方案--------------------
《计算方法》。
一般还会有个要求,
比如:只要凑一个一元就行。
比如:求所有能够凑成一元的情况。
比如:使用的硬币数最少。
比如:使用的硬币数最多。
------解决方案--------------------
可以凑成的情况,简单理解为5*?+2*?+1*?=10

public class test {
public static void main(String[] args) {
for (int a = 0; a <=2; a++) {
for (int b = 0; b <=5; b++) {
int c=10-a*5-b*2;
if(c>0&&a*5+b*2+c*1==10)
System.out.println(a+"*5+"+b+"*2+"+c+"*1=10");
}
}
}
}
------解决方案--------------------
探讨
可以凑成的情况,简单理解为5*?+2*?+1*?=10

public class test {
public static void main(String[] args) {
for (int a = 0; a <=2; a++) {
for (int b = 0; b <=5; b++) {
int c=10-a*5-b*2;
if(c>0&amp;&amp;a*5+b*2+c……

------解决方案--------------------
Java code
    int k = 0 ; //1出现的次数        for (int i = 0; i <= 2 ; i++){ //5最多出现两次            for (int j = 0; j <= 5; j++){//2最多出现五次                k =  10 - i * 2 - j * 2 ;                if (k >= 0){                    System.out.println("5出现 "+ i + " 次,2出现  " + j + "次,1出现 " + k  +"次");                }else { //如果k小于0,则之后的都不满足,所以跳出内层循环,即2出现的那层循环j                    break ;                }            }                    }
------解决方案--------------------
1元=100分,为什么楼上的都写10呢?

------解决方案--------------------
如果金币种类多的话可以用回溯+剪枝
------解决方案--------------------
错了,是《运筹学》中的线性规划问题吧 ?
按理说,应该是规定各种面值的硬币,分别多少枚。求凑成1元所用个数最少的情况。
------解决方案--------------------
想复杂了。最简单的,穷举法。
Java code
    public static void main(String[] args) {        int a=20;        int b=50;        int c=100;        final int total = 100;        for(int i=1;i<=a;i++){            for(int j=1;j<=b;j++){                for(int k=1;k<=c;k++){                    if(total == i*5+j*2+k){                        System.out.println("5x"+i+" + 2x"+j+" + 1x"+k);                    }                }            }        }    }
  相关解决方案