[第五届蓝桥杯省赛C++B组]六角填数

题目来源:第五届蓝桥杯省赛C++B组

算法标签:全排列

题目描述:

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

在这里插入图片描述

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

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

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

题目答案:

10

题目思路:

根据题意我们只需要填满每个空位然后全排列判断即可。
需要注意的是1、2、12位已经被固定。

题目代码:

#include<iostream>
#include<algorithm>

using namespace std;
int n[12]={1,2,3,4,5,6,7,8,9,10,11,12};
int main()
{
    do{
        int line1=n[0]+n[2]+n[5]+n[7];
        int line2=n[0]+n[3]+n[6]+n[10];
        int line3=n[7]+n[8]+n[9]+n[10];
        int line4=n[1]+n[2]+n[3]+n[4];
        int line5=n[1]+n[5]+n[8]+n[11];
        int line6=n[4]+n[6]+n[9]+n[11];
        if(line1==line2&&line2==line3&&line3==line4&&line4==line5&&line5==line6
        &&n[0]==1&&n[1]==8&&n[11]==3)cout<<n[5];
        
    }while(next_permutation(n,n+12));
    
    return 0;
}
发布了155 篇原创文章 · 获赞 18 · 访问量 3928

猜你喜欢

转载自blog.csdn.net/weixin_43910320/article/details/105056528
今日推荐