找零钱的算法实现(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 } 
原文地址:https://www.cnblogs.com/wincent98/p/9737523.html