早教吧 育儿知识 作业答案 考试题库 百科 知识分享

java中遇到的3个算法.importjava.util.*;publicclassCalNumber{publicstaticListcalNum(intrange){/*range的范围是从0到28.由用户自己输入,这里假定range是18*//*所需算法:从数字0到9中选择任意3个数字加起来

题目详情
java中遇到的3个算法.
import java.util.*;
public class CalNumber {
public static List calNum(int range) {
/* range的范围是从0到28.由用户自己输入 ,这里假定range是18*/
/*所需算法:从数字0到9中选择任意3个数字加起来的和 要等于18.但是有如下3种情况.*/
/* (1):第1种情况 :允许 出现.a,b,c 这3个数相同或者2个数相同,或者3个数各不相同的情况.满足3a=18,2a+b=18,a+b+c=18
*/
/* (2):第2种情况 :a,b,c 这3个数中必须有2个数相同的情况.如 2a+b=18,或者2b+a=18 或者2c+a(or b) =18*/
/* (3):第3种情况 :.a,b,c 中不允许 出现数字有任何2个或者3个相同的情况 只能满足a+b+c=18的情况.*/
//针对上面的3种情况.又该用怎样的算法.最高效.简洁的 写3个方法求出所有的结果呢?.谢各位大侠出来解答下.
return null;
}
}
▼优质解答
答案和解析
第一种:
public static void main(String[] args) {
int a, b, c;
int range = 18;
for (int i = 0; i < 10; ++i) {
a = i;
for (int j = 0; j < 10; ++j) {
b = j;
c = range - a - b;
if (c < 10 && c > -1) {
System.out.println("A B C 分别是 " + a + " " + b + " " + c);
}
}
}
}
第二种:
public static void main(String[] args) {
HashMap hm = new HashMap();
int a, b, c;
int range = 18;
for (int i = 0; i < 10; ++i) {
a = i;
for (int j = 0; j < 10; ++j) {
b = j;
c = range - a - b;
if (c < 10 && c > -1) {
hm.put(a, 0);
hm.put(b, 0);
hm.put(c, 0);
if (hm.size() == 2) {
System.out
.println("A B C 分别是 " + a + " " + b + " " + c);
}
hm.clear();
}
}
}
}
第三种:
public static void main(String[] args) {
HashMap hm = new HashMap();
int a, b, c;
int range = 18;
for (int i = 0; i < 10; ++i) {
a = i;
for (int j = 0; j < 10; ++j) {
b = j;
c = range - a - b;
if (c < 10 && c > -1) {
hm.put(a, 0);
hm.put(b, 0);
hm.put(c, 0);
if (hm.size() == 1) {
System.out
.println("A B C 分别是 " + a + " " + b + " " + c);
}
hm.clear();
}
}
}
}