一个简单的JAVA代码问题

2024-11-02 09:28:15
推荐回答(6个)
回答1:

利用全排列就可以不用去判断是否重复了
public class Nine {
void range(int[] a,int i){
if(i==a.length){
if(a[0]+a[1]+a[2]==15&&a[2]+a[3]+a[4]==15&&a[4]+a[5]+a[6]==15&&a[6]+a[7]+a[0]==15)
System.out.println(a[0]+" "+a[1]+" "+a[2]+"\n"+a[7]+" "+a[3]+"\n"+a[6]+" "+a[5]+" "+a[4]+"\n");
return;
}
for(int j=i;j swap(a,i,j);
range(a,i+1);
swap(a,i,j);
}
}
void swap(int[] a,int i,int j){
int t=a[j];
a[j]=a[i];
a[i]=t;
}
public static void main(String[] args) {
int[] a={1,2,3,4,5,6,7,8};
Nine nine=new Nine();
nine.range(a,0);
}
}

回答2:

1. for循环中修改 (为了保证数字不重复)
a<=8 (意思是A有8中取值)
b<=7 (若A已经选定,则B只有7中取值了)
c<=6 (若A,B都已经选定,则C有6中取值)
.
.
h<=1

if语句中使用 &&
短路与,如果前面一个表达式错误,就不会运算后面的,更节省时间

回答3:

我以初学者的眼光提点小意见。我感觉你虽然用的是java,但是写出来的东西跟c差不多。

你可以写一个方法,这个方法的作用是使任意一条边上的数相加,并在等于15的时候打印出来。
然后调用这个方法进行判断。

回答4:

8重循环。。赞 测试机器性能的好东东

回答5:

这东西你应该保存起来,当做经典的回忆!

回答6:

很久没有发现你这么有趣的人了,而且已经 做的很好了