标题:七星填数
在七角星的14个节点上填入1~14 的数字,不重复,不遗漏。
请计算其它位置要填充的数字,答案唯一。
填好后,请提交绿色节点的4个数字(从左到右,用空格分开)
比如:12 5 4 8
在七角星的14个节点上填入1~14 的数字,不重复,不遗漏。
要求每条直线上的四个数字之和必须相等。
图中已经给出了3个数字。请计算其它位置要填充的数字,答案唯一。
填好后,请提交绿色节点的4个数字(从左到右,用空格分开)
比如:12 5 4 8
当然,这不是正确的答案。
注意:只提交4个用空格分开的数字,不要填写任何多余的内容。
思路:直接暴力全排列,排列出所有的可能。
public class Test2 {
public static int[] a;
public static void dfs(int[] a,int j) {
if(a.length==j){
int num1 = 6+a[0]+a[1]+14;
int num2 = 14+a[2]+a[3]+a[4];
int num3 = a[4]+a[5]+a[6]+a[7];
int num4 = a[7]+a[8]+a[0]+a[9];
int num5 = a[9]+a[1]+a[2]+a[10];
int num6 = a[10]+a[3]+a[5]+11;
int num7 = 11+a[6]+a[8]+6;
if(num1==num2 && num1==num3 && num1==num4 && num1==num5 && num1==num6 && num1==num7
&&num2==num3 && num2==num4 && num2==num5 && num2==num6 && num2==num7
&&num3==num4 && num3==num5 && num3==num6 && num3==num7
&&num4==num5 && num4==num6 && num4==num7
&&num5==num6 && num5==num7
&&num6==num7){
System.out.println(a[9]+" "+a[0]+" "+a[8]+" "+a[7]);//从左往右输出
}
}
for (int x = j; x < a.length; x++) {
int temp = a[x];
a[x] = a[j];
a[j] = temp;
dfs(a, j+1);
temp = a[x];
a[x] = a[j];
a[j] = temp;
}
}
public static void main(String[] args) {
int[] a = {1,2,3,4,5,7,8,9,10,12,13};
dfs(a, 0);
}
}
答案:10 3 9 8