题目描述:

如图【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.

最新文章

  1. 【知识必备】一文让你搞懂design设计的CoordinatorLayout和AppbarLayout联动,让Design设计更简单~
  2. FSL - MELODIC
  3. 模拟赛1029d1
  4. UnrealEngine4 PBR Shading Model 概述
  5. Win10如何开启IIS服务以及如何打开IIS管理器
  6. Spring知识点总结
  7. python利用selenium和safari浏览器驱动实现新浪微博自动点赞 Demo
  8. PHP在线提交留言直接发到邮箱
  9. 利用SSH端口转发实现跨机器直接访问
  10. Spring IOC(三)依赖注入
  11. 设计模式之Factory工厂模式的好处
  12. sqlserver常用存储过程基本语法
  13. javascript学习一、js的初步了解
  14. Tomcat9报错 The valid characters are defined in RFC 7230 and RFC 3986
  15. python中基于queue的打印机仿真算法
  16. mysql查询各个知识点
  17. php中弱语言类型的底层实现
  18. Learning R笔记(一)
  19. maven项目怎么引入另一个maven项目
  20. Django 2.0 学习(06):Django 视图(进阶)

热门文章

  1. python笔记-4(装饰器、生成器、迭代器)
  2. 剑指offer-第五章优化时间和空间效率(从1到n的整数中1出现的次数)
  3. 利用Github免费搭建个人主页(个人博客)
  4. fft蝶形算法的特点
  5. 转载 关于case语句的优先级
  6. 洛谷 P3144 [USACO16OPEN]关闭农场Closing the Farm_Silver
  7. weblogic11g的安装使用
  8. (转)Android 使用com.j256.ormlite
  9. List,ArrayList
  10. spring mvc集成freemarker使用