题目描述:

如图【1.png】所示六角形中,填入1~12的数字。



    使得每条直线上的数字之和都相同。



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



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

解题思路:

图中的六角形中一共是12个数字,我们不妨就按照从上到下,从左到右的顺序为这12个节点进行编号。

然后我们继续进行分析,该图形一共有6条线,我们只需要让对应线上的元素的和相同即可。

我们使用数组保存1~12个节点的数值,通过递归的形式遍历出所有的可能,然后最后对结果进行判断。

程序代码:

  1. #include<iostream>
  2. using namespace std;
  3. bool check(int *a,int num) //用于检验a[num]时候与前面的元素是否有相同的值
  4. {
  5. for(int i=num-1;i>=0;i--)
  6. {
  7. if(a[i]==a[num])return false;
  8. }
  9. return true;
  10. }
  11. bool final_check(int *a) //用于检验是否所有直线上的和相等
  12. {
  13. int r1 = a[2]+a[3]+a[4]+a[5];
  14. int r2 = a[8]+a[9]+a[10]+a[11];
  15. int r3 = a[1]+a[3]+a[6]+a[8];
  16. int r4 = a[1]+a[4]+a[7]+a[11];
  17. int r5 = a[5]+a[7]+a[10]+a[12];
  18. int r6 = a[2]+a[6]+a[9]+a[12];
  19. if(r1==r2&&r2==r3&&r3==r4&&r4==r5==r6)
  20. return true;
  21. else
  22. return false;
  23. }
  24. //void show(int *a)
  25. //{
  26. // int i=1;
  27. // while(i<13)cout<<a[i++]<<" ";
  28. // cout<<endl;
  29. //}
  30. void fun(int *a,int num)
  31. {
  32. if(num==12)
  33. {
  34. a[num] = 3;
  35. if(final_check(a))
  36. //show(a);
  37. cout<<a[6]<<endl;
  38. return;
  39. }
  40. for(int i=2;i<13;i++)
  41. {
  42. a[num] = i;
  43. if(check(a,num))
  44. {
  45. fun(a,num+1);
  46. }
  47. }
  48. }
  49. int main()
  50. {
  51. int a[13]={3,1,8};
  52. fun(a,3);
  53. return 0;
  54. }

输出结果为10;

注释部分可以输出第1个节点到第12个节点的的数值:1 8 9 2 7 10 12 6 5 4 11 3

一些说明:注意在main函数中,语句a[13]={3,1,8} 表示a[1]=1,a[2]=8,而a[0]=3就是a[12]的值;

a[0]的作用体现在check函数中,通过比较,可以使a[1]~a[11]中的所有的节点取值都不为3,我们还注意到当num=12的时候,没有在对其进行check,因为前面已经通过a[0]的限制保证了前面的11个节点都不会取到3.

2014蓝桥杯B组初赛试题《六角填数》的更多相关文章

  1. 2014蓝桥杯B组初赛试题《啤酒和饮料》

    题目描述: 啤酒每罐2.3元,饮料每罐1.9元.小明买了若干啤酒和饮料,一共花了82.3元.     我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒.     注意:答案是一个整数.请通过 ...

  2. 2014蓝桥杯B组初赛试题《奇怪的分式》

    题目描述: 上小学的时候,小明经常自己发明新算法.一次,老师出的题目是:     1/4 乘以 8/5      小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png)   ...

  3. 2014蓝桥杯B组初赛试题《李白打酒》

    题目描述: 话说大诗人李白,一生好饮.幸好他从不开车.     一天,他提着酒壶,从家里出来,酒壶中有酒2斗.他边走边唱: 无事街上走,提壶去打酒.     逢店加一倍,遇花喝一斗.     这一路上 ...

  4. 2014蓝桥杯B组初赛试题《切面条》

    题目描述: 一根高筋拉面,中间切一刀,可以得到2根面条.     如果先对折1次,中间切一刀,可以得到3根面条.     如果连续对折2次,中间切一刀,可以得到5根面条.     那么,连续对折10次 ...

  5. 第七届蓝桥杯javaB组真题解析-方格填数(第六题)

    题目 /* 方格填数 如下的10个格子 +--+--+--+ | | | | +--+--+--+--+ | | | | | +--+--+--+--+ | | | | +--+--+--+ (如果显 ...

  6. 第七届蓝桥杯JavaB组——第6题方格填数

    解决方案:利用全排列和递归 使用Java中的集合API:HashMap ArrayList package com.lzp.lanqiaoseven.p6; import java.util.*; / ...

  7. 六角填数|2014年蓝桥杯B组题解析第七题-fishers

    六角填数 如图所示六角形中,填入1~12的数字. 使得每条直线上的数字之和都相同. 图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少? 请通过浏览器提交答案,不要填写多余的内容. 思路 ...

  8. 蓝桥杯 2014本科C++ B组 六角填数 枚举排列

    标题:六角填数 如图[1.png]所示六角形中,填入1~12的数字. 使得每条直线上的数字之和都相同. 图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少? 请通过浏览器提交答案,不要填 ...

  9. java实现第五届蓝桥杯六角填数

    六角填数 题目描述 如图[1.png]所示六角形中,填入1~12的数字. 使得每条直线上的数字之和都相同. 图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少? 请通过浏览器提交答案,不 ...

随机推荐

  1. (二)Nginx反向代理与负载均衡的实现

    引言:nginx正向代理与反向代理在上一篇文章中已经谈论过,这里狗尾草主要告诉大家Nginx对前端的小伙伴来说在工作中如何简单的使用. 1.0什么是反向代理 当我们有一个服务器集群,并且服务器集群中的 ...

  2. POJ1251 Jungle Roads

    解题思路:看懂题意是关键,Kruskal算法,最小生成树模板. 上代码: #include<cstdio> #include<cstring> #include<algo ...

  3. fn project AWS Lambda 格式 functions

      Creating Lambda Functions Creating Lambda functions is not much different than using regular funct ...

  4. 编程实现从hadoop上下载

    下载 package hadoopTest; import java.io.File; import java.io.IOException; import org.apache.hadoop.con ...

  5. PDF通过剪裁来实现打印字体变大

    之前打印论文,很多都是一页两版,这个时候字体会非常小:打印缩放放大后,字又容易出了打印边界. 这种情况可以采用Adobe IX Pro(只要是pro应该都可以)进行边缘裁剪来实现字体放大.只需要剪裁( ...

  6. 关于app集成支付宝应用内支付的问题总结

    pem文件生成,将合作伙伴密钥复制到notepad++中,每45个字符回车,去除空格,头尾加上标题,文件需保存为无BOM的UTF8格式,就OK.  可以每行64个字符,共216个字符.   近来处理了 ...

  7. 使用resteasy作为dubbox消费者

    dubbox服务提供者是REST风格的,消费者可能是从dubbox过来的,也可能是从第三方外部系统过来的.后者的话我们没得选,只能以服务提供者直连,服务治理平台和监控中心手再长,也管不到别人的地盘.但 ...

  8. 参数化防SQL注入

    private void AddStudent(){ string strName =txtName.Text.Trim(); string strPwd = txtPwd.Text.Trim(); ...

  9. 如何删除xcode 中过期的描述性文件

    1.使用终端 首先 打开终端 cd ~/Library/MobileDevice/Provisioning\ Profiles/再删除所有 rm *.mobileprovision 2.直接找到文件夹 ...

  10. Python--urllib3库

    Urllib3是一个功能强大,条理清晰,用于HTTP客户端的Python库,许多Python的原生系统已经开始使用urllib3.Urllib3提供了很多python标准库里所没有的重要特性:   1 ...