问题描述
把100元钱换成1元,2元,5元,10元的有多少种换法?麻烦大家都把你们的方式写下来我参考、参考?貌似可以用递归但是我没有写过,我写过四个嵌套循环,但是确实很不行那种方式。效率问题。希望大虾们把你们的方式写出来给小弟我参考参考。
解决方案
解决方案二:
循环嵌套可以稍微优化一下,比如for(intcnt10=0;cnt10<=10;cnt10++)另外,如果到某个循环,发现总和已经>100,那么就可以break了
解决方案三:
这个google一下,应该有详细的答案
解决方案四:
递归做比较好。。
解决方案五:
packagecom.keeya.test;//100元的各种零钱publicclassDecNum{publicstaticvoidmain(String[]args){PrintHowToDivide(100);}publicstaticvoidPrintHowToDivide(intvalue){inttemp=value;intten=temp/10;temp%=10;intfive=temp/5;temp%=5;inttwo=temp/2;temp%=2;intone=temp;PrintHowToDivide(value,ten,five,two,one);}/**value为需要分解的钱,num_five,num_two,num_one分别为当前的521块的张数**/privatestaticvoidPrintHowToDivide(intvalue,intnum_ten,intnum_five,intnum_two,intnum_one){System.out.println(value+"块钱有如下分法:"+num_ten+"张10元,"++num_five+"张5元,"+num_two+"张2元,"+num_one+"张1元");if(num_one==value)return;if(num_two>0){PrintHowToDivide(value,num_ten,num_five,num_two-1,num_one+2);}elseif(num_five>0){PrintHowToDivide(value,num_ten,num_five-1,(num_one+5)/2,(num_one+5)%2);}elseif(num_ten>0){PrintHowToDivide(value,num_ten-1,(num_one+10)/5,(num_one+10)%5/2,(num_one+10)%5%2);}}}
解决方案六:
我4楼给的是原来个改的其实这个可扩展性不好可以把需要分成什么面额的以参数传进去懒的写了呵呵
解决方案七:
受教了
解决方案八:
算法是弱项,呵呵,看看高手解答
解决方案九:
学习了