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