六角填数
程序员文章站
2023-12-23 16:58:10
...
如图所示六角形中,填入1~12的数字。
使得每条直线上的数字之和都相同。
图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?
思路:遍历所有组合,判断是否相等。注意使用next_permutation函数时赋值从a[0]开始。
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int sum = 0;
int a[12];
for(int i = 0; i < 13; i++) a[i] = i+1;
do
{
int b = a[0]+a[2]+a[5]+a[7];
int c = a[0]+a[3]+a[6]+a[10];
int d = a[7]+a[8]+a[9]+a[10];
int e = a[1]+a[2]+a[3]+a[4];
int f = a[1]+a[5]+a[8]+a[11];
int g = a[4]+a[6]+a[9]+a[11];
if(b==c&&b==d&&b==e&&b==f&&b==g&&
c==d&&c==e&&c==f&&c==g&&d==e&&
d==f&&d==g&&e==f&&e==g&&f==g)
{
cout<<a[5]<<endl;
break;
}
}
while(next_permutation(a,a+12));
return 0;
}