2014 蓝桥杯C/C++B组省赛 六角填数

来源:互联网 发布:sql server seq 编辑:程序博客网 时间:2024/05/29 04:36

六角填数

如图所示六角形中,填入1~12的数字,使得每条直线上的数字之和都相同。

这里写图片描述

图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?

请通过浏览器提交答案,不要填写多余的内容。

填空答案

10

代码

import java.util.HashSet;public class Main {    static int sum;    static int[] a = new int[9];    static int[] check = new int[13];    public static void main(String[] args) {        check[1] = 1;        check[3] = 1;        check[8] = 1;        dfs(0);    }    private static void dfs(int k) {        if (k == 9) {            HashSet<Integer> set = new HashSet<>();            set.add(a[0] + a[1] + a[2] + 8);            set.add(11 + a[3] + a[6]);            set.add(3 + a[2] + a[4] + a[7]);            set.add(1 + a[0] + a[3] + a[5]);            set.add(a[5] + a[6] + a[7] + a[8]);            set.add(1 + a[1] + a[4] + a[8]);            if (set.size() == 1)                System.out.println(a[3]);            return;        }        for (int i = 1; i < 13; i++) {            if (check[i] == 1)                continue;            check[i] = 1;            a[k] = i;            dfs(k + 1);            check[i] = 0;        }    }}
0 0
原创粉丝点击