做一个“凑钱”的小程序

凑钱:设计一个windows程序,输入正整数m,它代表一个人民币钱数(元数)。求取这样一个方案,使用最少张数的人民币纸币,凑成上述的钱数m,并输出求取结果。注意,现在共有7种元以上面值的人民币纸币,分别为:100,50,20,10,5,2,1。
 1 //输入一个正整数即可得到凑钱所有面值,返回ArrayList形式数据,调用如:getjia(100)
 2 //那么得到50,50,把数据从arraylist循环出来即可
 3  public ArrayList getjia(int num)
 4         {
 5             ArrayList ss = new ArrayList();
 6             int[] canus = { 100, 50, 20, 10, 5, 2, 1 };
 7             for (int i = 0; i < canus.Length; i++)
 8             {
 9                 if (num - canus[i] > 0)
10                 {
11                     int newnum = num - canus[i];
12                     ss.Add(canus[i]);
13                     if (newnum != 100 && newnum != 50 && newnum != 20 && newnum != 10 && newnum != 5 && newnum != 2 && newnum != 1)
14                     {
15                         ArrayList ss2 = new ArrayList();
16                         ss2 = getjia(newnum);
17                         for (int i2 = 0; i2 < ss2.Count; i2++)
18                         {
19                             ss.Add(ss2[i2]);
20  
21                         }
22                     }
23                     else
24                     {
25                         ss.Add(newnum);
26                     }
27                     break;
28                 }
29             }
30             return ss;
31         }
原文地址:https://www.cnblogs.com/tuzhiyuan/p/4536235.html