2014蓝桥杯B组初赛试题《六角填数》
题目描述:
如图【1.png】所示六角形中,填入1~12的数字。
使得每条直线上的数字之和都相同。
图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?
请通过浏览器提交答案,不要填写多余的内容。
解题思路:
图中的六角形中一共是12个数字,我们不妨就按照从上到下,从左到右的顺序为这12个节点进行编号。
然后我们继续进行分析,该图形一共有6条线,我们只需要让对应线上的元素的和相同即可。
我们使用数组保存1~12个节点的数值,通过递归的形式遍历出所有的可能,然后最后对结果进行判断。
程序代码:
- #include<iostream>
- using namespace std;
- bool check(int *a,int num) //用于检验a[num]时候与前面的元素是否有相同的值
- {
- for(int i=num-1;i>=0;i--)
- {
- if(a[i]==a[num])return false;
- }
- return true;
- }
- bool final_check(int *a) //用于检验是否所有直线上的和相等
- {
- int r1 = a[2]+a[3]+a[4]+a[5];
- int r2 = a[8]+a[9]+a[10]+a[11];
- int r3 = a[1]+a[3]+a[6]+a[8];
- int r4 = a[1]+a[4]+a[7]+a[11];
- int r5 = a[5]+a[7]+a[10]+a[12];
- int r6 = a[2]+a[6]+a[9]+a[12];
- if(r1==r2&&r2==r3&&r3==r4&&r4==r5==r6)
- return true;
- else
- return false;
- }
- //void show(int *a)
- //{
- // int i=1;
- // while(i<13)cout<<a[i++]<<" ";
- // cout<<endl;
- //}
- void fun(int *a,int num)
- {
- if(num==12)
- {
- a[num] = 3;
- if(final_check(a))
- //show(a);
- cout<<a[6]<<endl;
- return;
- }
- for(int i=2;i<13;i++)
- {
- a[num] = i;
- if(check(a,num))
- {
- fun(a,num+1);
- }
- }
- }
- int main()
- {
- int a[13]={3,1,8};
- fun(a,3);
- return 0;
- }
输出结果为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组初赛试题《六角填数》的更多相关文章
- 2014蓝桥杯B组初赛试题《啤酒和饮料》
题目描述: 啤酒每罐2.3元,饮料每罐1.9元.小明买了若干啤酒和饮料,一共花了82.3元. 我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒. 注意:答案是一个整数.请通过 ...
- 2014蓝桥杯B组初赛试题《奇怪的分式》
题目描述: 上小学的时候,小明经常自己发明新算法.一次,老师出的题目是: 1/4 乘以 8/5 小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png) ...
- 2014蓝桥杯B组初赛试题《李白打酒》
题目描述: 话说大诗人李白,一生好饮.幸好他从不开车. 一天,他提着酒壶,从家里出来,酒壶中有酒2斗.他边走边唱: 无事街上走,提壶去打酒. 逢店加一倍,遇花喝一斗. 这一路上 ...
- 2014蓝桥杯B组初赛试题《切面条》
题目描述: 一根高筋拉面,中间切一刀,可以得到2根面条. 如果先对折1次,中间切一刀,可以得到3根面条. 如果连续对折2次,中间切一刀,可以得到5根面条. 那么,连续对折10次 ...
- 第七届蓝桥杯javaB组真题解析-方格填数(第六题)
题目 /* 方格填数 如下的10个格子 +--+--+--+ | | | | +--+--+--+--+ | | | | | +--+--+--+--+ | | | | +--+--+--+ (如果显 ...
- 第七届蓝桥杯JavaB组——第6题方格填数
解决方案:利用全排列和递归 使用Java中的集合API:HashMap ArrayList package com.lzp.lanqiaoseven.p6; import java.util.*; / ...
- 六角填数|2014年蓝桥杯B组题解析第七题-fishers
六角填数 如图所示六角形中,填入1~12的数字. 使得每条直线上的数字之和都相同. 图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少? 请通过浏览器提交答案,不要填写多余的内容. 思路 ...
- 蓝桥杯 2014本科C++ B组 六角填数 枚举排列
标题:六角填数 如图[1.png]所示六角形中,填入1~12的数字. 使得每条直线上的数字之和都相同. 图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少? 请通过浏览器提交答案,不要填 ...
- java实现第五届蓝桥杯六角填数
六角填数 题目描述 如图[1.png]所示六角形中,填入1~12的数字. 使得每条直线上的数字之和都相同. 图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少? 请通过浏览器提交答案,不 ...
随机推荐
- (二)Nginx反向代理与负载均衡的实现
引言:nginx正向代理与反向代理在上一篇文章中已经谈论过,这里狗尾草主要告诉大家Nginx对前端的小伙伴来说在工作中如何简单的使用. 1.0什么是反向代理 当我们有一个服务器集群,并且服务器集群中的 ...
- POJ1251 Jungle Roads
解题思路:看懂题意是关键,Kruskal算法,最小生成树模板. 上代码: #include<cstdio> #include<cstring> #include<algo ...
- fn project AWS Lambda 格式 functions
Creating Lambda Functions Creating Lambda functions is not much different than using regular funct ...
- 编程实现从hadoop上下载
下载 package hadoopTest; import java.io.File; import java.io.IOException; import org.apache.hadoop.con ...
- PDF通过剪裁来实现打印字体变大
之前打印论文,很多都是一页两版,这个时候字体会非常小:打印缩放放大后,字又容易出了打印边界. 这种情况可以采用Adobe IX Pro(只要是pro应该都可以)进行边缘裁剪来实现字体放大.只需要剪裁( ...
- 关于app集成支付宝应用内支付的问题总结
pem文件生成,将合作伙伴密钥复制到notepad++中,每45个字符回车,去除空格,头尾加上标题,文件需保存为无BOM的UTF8格式,就OK. 可以每行64个字符,共216个字符. 近来处理了 ...
- 使用resteasy作为dubbox消费者
dubbox服务提供者是REST风格的,消费者可能是从dubbox过来的,也可能是从第三方外部系统过来的.后者的话我们没得选,只能以服务提供者直连,服务治理平台和监控中心手再长,也管不到别人的地盘.但 ...
- 参数化防SQL注入
private void AddStudent(){ string strName =txtName.Text.Trim(); string strPwd = txtPwd.Text.Trim(); ...
- 如何删除xcode 中过期的描述性文件
1.使用终端 首先 打开终端 cd ~/Library/MobileDevice/Provisioning\ Profiles/再删除所有 rm *.mobileprovision 2.直接找到文件夹 ...
- Python--urllib3库
Urllib3是一个功能强大,条理清晰,用于HTTP客户端的Python库,许多Python的原生系统已经开始使用urllib3.Urllib3提供了很多python标准库里所没有的重要特性: 1 ...