题目:
如图所示六角形中,填入1~12的数字。
使得每条直线上的数字之和都相同。
图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?
请通过浏览器提交答案,不要填写多余的内容。
答案: 10
分析:
思路1:将空白的几个圈编号分别对应数组下标,将2,4,5,6,7,9,10,11,12这几个数放进数组进行全排列,再检查
代码:
#include<iostream>
#include<algorithm>
using namespace std;
int arr[] = {2,4,5,6,7,9,10,11,12};
void check(){
int a = 1+arr[0]+arr[3]+arr[5];
int b = 1+arr[1]+arr[4]+arr[8];
int c = arr[5]+arr[6]+arr[7]+arr[8];
int d = 11+arr[3]+arr[6];
int e = 3+arr[2]+arr[4]+arr[7];
int f = 8+arr[0]+arr[1]+arr[2];
if(a==b && a==c && d==e && d==f && a==d){
cout << arr[3];
}
}
void solve(){
do{
check();
}while(next_permutation(arr,arr+9));
}
int main(){
solve();
}