早教吧作业答案频道 -->其他-->
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;
}
}
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();
}
}
}
}
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();
}
}
}
}
看了java中遇到的3个算法.im...的网友还看了以下:
请问一下关于假言命题的真假是通过推理得出来的 还是规定的例如 充分假言命题 只有前真后假的情况才为 2020-05-17 …
请你设想一下,假如g由9.8牛每千克变为7.8牛每千克,我们的生活会有�� 2020-06-28 …
假设G是xoy平面上以原点为圆心,R为半径的圆区域。f(x,y)是X和Y的联合密度。在圆G上均匀分 2020-07-29 …
在这个暑假里,有人问我你读几年级了,而我刚好是读完五年级,放这个暑假,这个暑假报名就该读六年级了. 2020-12-06 …
一真一假,一假一真,真真假假,假假真真!造句!例如:一A一B,一B一A,AABB,BBAA造句!(不 2020-12-13 …
关于真假命题的判断如果(真)那么(假).这命题是真还是假?同样如果(真)那么(真)如果(假)那么(假 2020-12-13 …
设函数f(x)的定义域为(-l,l),证明必存在(-l,l)上的偶函数及奇函数h(x),使得f(x) 2020-12-14 …
六年三班今天早上请假人数是出席人数的九分之一下午又有一个人请假这样一来请假这样一来,请假人数是出席人 2020-12-14 …
六三班今天早上请假人数是出席人数的九分之一下午又有一个人请假,这样一来请假这样一来,请假人数是出席这 2020-12-14 …
(20qq•杭锦旗)今年四月,美国《科学》杂志发表“新超导体将中国物理学家推到最前沿”的评述.这表明 2021-01-13 …