反幻方
作者:
husheng
,
2022-05-07 12:18:32
,
所有人可见
,
阅读 183
import java.util.*;
public class Main{
public static boolean[] vis=new boolean[9];
static int ans=0;
public static void dfs(int[] arr,int cur,int[] str) {
int a=str[0]+str[1]+str[2];
int b=str[3]+str[4]+str[5];
int c=str[6]+str[7]+str[8];
int d=str[0]+str[3]+str[6];
int e=str[1]+str[4]+str[7];
int f=str[2]+str[5]+str[8];
int g=str[0]+str[4]+str[8];
int h=str[2]+str[4]+str[6];
if(cur==9) {
if(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h&&
b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=h&&
c!=d&&c!=e&&c!=f&&c!=g&&c!=h&&
d!=e&&d!=f&&d!=g&&d!=h&&
e!=f&&e!=g&&e!=h&&
f!=g&&f!=h&&
g!=h) {
ans++;
}
return ;
}
for(int i=0;i<9;i++) {
if(!vis[i]) {
str[cur]=arr[i];
vis[i]=true;
dfs(arr,cur+1,str);
vis[i]=false;
}
}
}
public static void main(String[] args) {
int[] arr= {1,2,3,4,5,6,7,8,9};
int[] str=new int[9];
dfs(arr,0,str);
System.out.println(ans/8);
}
}