六角填数
如图所示六角形中,填入1~12的数字。使得每条直线上的数字之和都相同。
图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?
public class test6_Like {
static int[] vis = new int[13];
static int[] a = new int[13];
static void dfs(int n){
if(n>12){
if(a[8]==8 && a[1]==1 && a[3]==3){
int res = a[8]+a[2]+a[4]+a[5];
if(a[8]+a[6]+a[10]+a[3]==res && a[5]+a[7]+a[11]+a[3]==res &&
a[1]+a[2]+a[6]+a[9]==res && a[1]+a[4]+a[7]+a[12]==res && a[9]+a[10]+a[11]+a[12]==res)
System.out.println(a[6]);
}
}
for(int i=1;i<=12;i++){
if(vis[i]==0){
vis[i]=1;
a[n]=i;
dfs(n+1);
vis[i]=0;
}
}
}
public static void main(String[] args) {
long start = System.currentTimeMillis();
for(int i=0;i<13;i++)
vis[i]=0;
dfs(1);
long end = System.currentTimeMillis();
System.out.println(end-start);
}
}