【蓝桥杯】【六角填数】
来源:互联网 发布:淘宝店铺店名怎么改 编辑:程序博客网 时间:2024/04/29 15:29
标题:六角填数
如图【1.png】所示六角形中,填入1~12的数字。
使得每条直线上的数字之和都相同。
图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?
如图【1.png】所示六角形中,填入1~12的数字。
使得每条直线上的数字之和都相同。
图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?
请通过浏览器提交答案,不要填写多余的内容。
分析:我们需要想一个数据结构来存储数据,一般能想到的就是数组了,int[] a由12个元素1~12组成,从上到下从左到右依次编号,然后递归回溯遍历出所有的可能组合。
源码:
public class Test016 {public static void main(String[] args) {int[] a = new int[12];for(int i=0; i<12; i++){a[i] = i+1;}int[] r = new int[6];find(a, 0, r);}//a是最长数组,k是子数组的first indexprivate static void find(int[] a, int k, int[] r){if(k >= 12){return;}for(int i=k; i<a.length; i++){{//交换int temp = a[k];a[k] = a[i];a[i] = temp;}if(a[0] == 1 && a[1] == 8 && a[11]==3){r[0] = a[0] + a[2] + a[5] + a[7];r[1] = a[7] + a[8] + a[9] + a[10];r[2] = a[10] + a[6] + a[3] + a[0];r[3] = a[1] + a[5] + a[8] + a[11];r[4] = a[11] + a[9] + a[6] + a[4];r[5] = a[4] + a[3] + a[2] + a[1];if(check(r)){//找到答案了System.out.println(a[5]);return;}}find(a, k+1, r);{//回溯int temp = a[k];a[k] = a[i];a[i] = temp;}}}//检查元素个数为6的数组中的每个元素是否相等private static boolean check(int[] r){boolean flag = true;for(int j=0; j<5; j++){if(r[j+1] != r[j]){flag = false;break;}}return flag;}}
最后得出的答案是:10
3 1
- 【蓝桥杯】【六角填数】
- 蓝桥杯 六角填数
- 蓝桥杯--六角填数
- 蓝桥杯 六角填数
- 六角填数 蓝桥杯
- 六角填数 蓝桥杯
- 蓝桥杯历届-六角填数
- 【2014蓝桥杯】六角填数
- 六角填数(蓝桥杯)
- 蓝桥杯之六角填数
- java 蓝桥杯 六角填数
- 蓝桥杯:六角填数问题
- 蓝桥杯 2014预赛 六角填数 DFS
- 蓝桥杯 六角填数 (next_permutation/新技能)
- 蓝桥杯 历届试题 六角填数
- 蓝桥杯第五届 六角填数
- 蓝桥杯 第五届 六角填数
- 六角填数
- 读写注册表的示例代码(待更新)
- 用Storage Foundation管好存储系统-进阶
- C语言 变量类型
- eclipse配置tomcat访问localhost:8080出现404
- HDU 1058 Humble Numbers【巧用优先队列】
- 【蓝桥杯】【六角填数】
- C语言 static和extern关键字 对函数的作用
- 统一图片尺寸方法
- web前端学习资源地址
- 用Storage Foundation管好存储系统-高级
- CTreeCtrl的SortChildrenCB的用法,用于个性化排序
- C语言 static和extern关键字 对变量的作用
- LeetCode 100 Same Tree(相同树判断)(二叉树、递归、栈和队列、深搜和宽搜)
- 【树】已知二叉树前序和中序遍历求后序遍历,及中序和后序遍历求前序遍历