找零錢的算法實現(Java)
阿新 • • 發佈:2018-10-02
pre spa hang 算法 sys change [] int eal
簡單的算法
基本思路就是將面值從大到小統計(外循環), 若當前金額大於某面值, 則當前金額減掉該面值, 並將面值對應張數+1, 繼續往下判斷(內循環)
1 public void Change(int money) 2 { 3 //面值 4 int[] value= {100,50,20,10,5,1}; 5 //對應找零張數 6 int[] count=new int[value.length]; 7 for(int i=0;i<value.length;i++) 8 {9 while(money>=value[i]) 10 { 11 money-=value[i]; 12 count[i]++; 13 } 14 //輸出 15 if(count[i]!=0) 16 { 17 System.out.println(count[i]+"張"+value[i]+"元"); 18 } 19} 20 }
原文鏈接:https://zhidao.baidu.com/question/391280227231381725.html
附我自己一開始寫的代碼, 看來還是要多加學習
1 int hundred=0,fifty=0,twenty=0,ten=0,five=0,one=0; 2 //realPayment實付款 payment應付款 3 int change=realPayment-payament; 4 if(change>0) 5 { 6 7 while(change!=0) 8 { 9 if(change>=100) 10 { 11 hundred=change/100; 12 change%=100; 13 } 14 else if(change>=50) 15 { 16 fifty++; 17 change%=50; 18 } 19 else if(change>=20) 20 { 21 twenty++; 22 change%=20; 23 } 24 else if(change>=10) 25 { 26 ten++; 27 change%=10; 28 } 29 else if(change>=5) 30 { 31 five++; 32 change%=5; 33 } 34 else 35 { 36 one=change; 37 change=0; 38 } 39 } 40 41 }
找零錢的算法實現(Java)