早教吧作业答案频道 -->其他-->
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...的网友还看了以下:
9的循环=1的那个证明==0.3的循环=1/30.3(循环)*3=0.9(循环)1/3*3=1∴0 2020-05-22 …
排列器0-9排列数字.每一组3个数字.有谁能帮忙排出来.0-9排列数字.每一组3个数字.有谁能帮忙 2020-06-05 …
一个工人看管三台自动机床,在一小时内第一,二,三台机床不需要照顾的概率分别为0.9,0.8,0.7 2020-06-17 …
谜语猜数字,麻烦达人进来看看,(3)每天更新,每次100分,第一组谜语:侯门深似海(0-9的数字) 2020-06-20 …
某车间的零件来自甲、乙、丙三厂,其各占比例为5:3:2,合格率分别为0.9、0.8、0.75;现从 2020-06-23 …
学校体育馆长方体形状的游泳池,长50米,宽20米,深1.2米。要在池壁和池底贴上面积是0.16平方 2020-07-13 …
0.1*0.3*0.9+0.2*0.6*1.8+0.3*0.9*2.7/0.1*0.2*0.4+0 2020-07-26 …
懂数学的和会玩3D的进来,本人自己的答案是262种,例如确定0时有:000至099的首位为0的100 2020-11-20 …
1等于0.9的循环吗?为什么?3/9=0.3的循环.6/9=0.6的循环.6/9+3/9=10.6的 2020-11-21 …
请高手回答,0.9...=1,带来的疑问有两种方法证明0.9.9999=1,头一种:1/3=0.33 2020-11-27 …