凑钱:设计一个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 }