六角填数
如下图所示六角形中,填入1~12的数字。 使得每条直线上的数字之和都相同。 图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?
public class MainG {
static int[] arr={2, 4, 5, 6, 7, 9, 10, 11, 12};
public static void main(String[] args){
f(0);
}
public static void f(int k){//简单的全排列
if(k==9){
check();
return;
}
for(int i=k;i<=8;i++){//i=k,不要错写成i=0
int temp=arr[i];
arr[i]=arr[k];
arr[k]=temp;
f(k+1);
temp=arr[i];
arr[i]=arr[k];
arr[k]=temp;
}
}
public static void check(){
int r1 = 1 + arr[0] + arr[3] + arr[5];
int r2 = 1 + arr[1] + arr[4] + arr[8];
int r3 = 8 + arr[0] + arr[1] + arr[2];
int r4 = 11 + arr[3] + arr[6];
int r5 = 3 + arr[2] + arr[4] + arr[7];
int r6 = arr[5] + arr[6] + arr[7] + arr[8];
if(r1==r2&&r2==r3&&r3==r4&&r4==r5&&r5==r6&&r6==r1){
for(int i=0;i<=8;i++)
System.out.println("arr["+i+"] = " + arr[i]);
}
}
}