public class 五星填数 {
/**
* 分机号的代码粘贴过来就能用
*/
private static int[] a = new int[13];
//创建标记数组
private static boolean[] vis = new boolean[13];
private static int count = 0;
/**
* 排列
* @param cur
*/
private static void f(int cur){
if(cur==10){
//操作
if(solve()){
count++;
}
return;
}else {
for(int i=1;i<=12;i++){
if(i==7||i==11)continue;
if(vis[i]) continue;
vis[i] = true;
a[cur] = i;
f(cur+1);
//回溯
vis[i] = false;
}
}
}
private static boolean solve() {
int[] b = new int[5];
b[0] = a[0] +a[2] +a[5] +a[8];
b[1] = a[0] +a[3] +a[6] +a[9];
b[2] = a[1] +a[2] +a[3] +a[4];
b[3] = a[1] +a[5] +a[7] +a[9];
b[4] = a[4] +a[6] +a[7] +a[8];
for(int i=1;i<5;i++){
if(b[i-1]!=b[i]){
return false;
}
}
return true;
}
public static void main(String[] args) {
f(0);
System.out.println(count/10);
}
}