早教吧作业答案频道 -->其他-->
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...的网友还看了以下:
陈文灯《复习指南》中定积分一道计算题·设函数f(x),g(x)满足f'(x)=g(x),g'(x) 2020-04-26 …
1设g(x)={e^x,x≤0;lnx,x>0,则g(g(1/2))=?2.类比平面几何中勾股定理 2020-05-13 …
高中数学选修2-2导数部分习题已知关于x的函数g(x)=2/x+lnx f(x)=x²+g(x) 2020-05-16 …
抽象代数:证:设6阶群G不是循环群,则G≌S3证:因为G不是循环群,故G没有6阶元.从而由Lagr 2020-05-16 …
你给找找答案1、证明:若G不是交换群而其阶大于2,则在G中存在适合条件ab=ba,且不是单位元的元 2020-07-10 …
符号“G”表示一种运算,它对一些数的运算结果如下:(1)G(1)=1,G(2)=3,G(3)=5, 2020-07-20 …
s=1/2*g*t^2(s为直线运动的距离s=1/2*g*t^2g为在地球上的加速度t为时间)s= 2020-07-22 …
1.下列反应中,反应的标准摩尔焓变△rHm与生成物的标准摩尔生成焓△fHm相等的是()A.CaO( 2020-07-23 …
设集合G中的元素是所有形如a+b√2(a∈Z,b∈Z)的数,求证:(1)当x∈N时,x∈G;(2) 2020-07-25 …
高数间断点问题设f(x)在R上连续,且f(x)不等于0,g(x)在R上有定义,且有间断点,则下列陈 2020-07-30 …