今天看了下全排列,然后看到了个题目。用计算机算一下一个简单幻方的小问题,就是一个四边形,四条边共有8个方块,往里面填入1到8,不许重复,并且任意一条边的和相加等于15。编完后用了好长时间改错,终于完成。得意一把。
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<a.length;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;
a=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);
}
} |