找零錢的算法實現(Java)


簡單的算法

基本思路就是將面值從大到小統計(外循環), 若當前金額大於某面值, 則當前金額減掉該面值, 並將面值對應張數+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 } 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM