(原创) Java - 给定大于0的整数n,要求输出由一元、二元和五元纸币组成n元钱的所有方案
//用Java语言编写程序
//给定大于0的整数n,要求输出由一元、二元和五元纸币组成n元钱的所有方案
题目来源:http://wenwen.soso.com/z/q135795552.htm
以下代码是 - 原创
//Stone - 2009-6-9
class A
{
public static void main(String["> args)
{
run(5,"");
}
private static void run(int n,String value){
if(n<=0){
System.out.println(value);
return;
}
String temp = value;
int num["> = {1,2,5};
for(int i=0;i<num.length;i++){
boolean flag = true;
/*
* 过滤重复的方案
for(int j=i+1;j<num.length;j++){
if(temp.indexOf(num[j">+"")>=0){
flag = false;
}
}
*/
if(n-num[i">>=0 && flag){
run(n-num[i">,temp+num[i">);
}
}
}
}
---------- Java ---------- 无过滤的结果
11111
1112
1121
1211
122
2111
212
221
5
1121 和 1112 和 1211 和 2111 这几种情况其实可以算做事一种方案
122 和 212 和 221 这几种情况也可以算做事一种方案
如果需要将这些重复的方案过滤出来,只显示一种的话,那程序输出就是下面这个样子:
---------- Java ---------- 过滤之后结果
11111
1112
122
5
附件(1)
Java_A.rar