日期:2014-05-20 浏览次数:20726 次
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元所用个数最少的情况。
------解决方案--------------------
想复杂了。最简单的,穷举法。
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); } } } } }