题目来源:第五届蓝桥杯省赛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;
}