如图所示六角形中,填入1~12的数字。
使得每条直线上的数字之和都相同。
图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?
package lanqiao;
public class liujiaotianshu {
static int a[]={2,4,5,6,7,9,10,11,12};
static boolean b[]=new boolean[9];
public static void main(String[] args) {
dfs(0);
}
private static void dfs(int k){
if(k==9){
return;
}
int sum=1+a[0]+a[3]+a[5];
if(sum==8+a[0]+a[1]+a[2]
&&sum==8+a[3]+a[6]+3
&&sum==1+a[1]+a[4]+a[8]
&&sum==a[2]+a[4]+a[7]+3){
System.out.printf("%4d%4d%4d%4d%4d%4d%4d%4d%4d",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);
System.out.println("-----------------------");
}
int temp=k;
for(int i=0;i<a.length;i++){
b[i]=true;
swap(k,i);
dfs(k+1);
swap(k,i);
b[i]=false;
}
}
static void swap(int i,int j){
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}