简单的算法
基本思路就是将面值从大到小统计(外循环), 若当前金额大于某面值, 则当前金额减掉该面值, 并将面值对应张数+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 }