将数字 1…9 填入一个 3×3 的九宫格中,使得格子中每一横行和的值全部相等,每一竖列和的值全部相等。请你计算有多少种填数字的方案。
思路:全排列求解。
int array[];
int book[];
public static void main(String[] args){
Test7 test= new Test7();
test.start();
}
public void start(){
book=new int[9];
array=new int[9];
for(int i=0;i<book.length;i++){
book[i]=1;
}
recursion(0);
System.out.println(sum);
sum=0;
}
int sum;
public void recursion(int step){
if(step==array.length){
int add=column(0);
for(int i=0;i<3;i++){
if(add!=column(i)){
return;
}
}
for(int i=0;i<array.length;i+=3){
if(add!=rows(i)){
return;
}
}
sum++;
return;
}
for(int i=0;i<array.length;i++){
if(book[i]!=0){
book[i]=0;
array[step]=i;
recursion(step+1);
book[i]=1;
}
}
}
public int column(int index){
int add=0;
for(int i=index;i<array.length;i+=3){
add+=array[i]+1;
}
return add;
}
public int rows(int index){
int add=0;
for(int i=index;i<index+3;i++){
add+=array[i]+1;
}
return add;
}