第七届蓝桥杯国赛 七星填数【Java】

标题:七星填数

在七角星的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
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值