标题:六角填数
如图【1.png】所示六角形中,填入1~12的数字。
使得每条直线上的数字之和都相同。
图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?
请通过浏览器提交答案,不要填写多余的内容。
答案:10
#include<iostream>
using namespace std;
int a[20];
int b[20];
void zong()
{
int num[7];
int i;
//定义六角每个角的和
num[1] = a[1] + a[3] + a[6] + a[8];
num[2] = a[1] + a[4] + a[7] + a[11];
num[3] = a[2] + a[3] + a[4] + a[5];
num[4] = a[2] + a[6] + a[9] + a[12];
num[5] = a[5] + a[7] + a[10] + a[12];
num[6] = a[8] + a[9] + a[10] + a[11];
for (i = 2; i < 7; i++)
{
if (num[i] != num[i - 1])
{
return;
}
}
cout << a[6];
}
void sum(int m)//深度搜索
{
int i;
if (m == 1 || m == 2 || m == 12)
{
sum(m + 1);
return;
}
if (m == 13)
{
zong();
}
for (i = 1; i <= 12; i++)
{
if (b[i] == 0)
{
b[i] = 1;
a[m] = i;
sum(m + 1);
b[i] = 0;
}
}
}
int main()
{
int i, j;
a[1] = 1, a[2] = 8, a[12] = 3;
b[1] = 1, b[3] = 1, b[8] = 1;
sum(1);
for (int i = 1; i <= 12; i++)
{
cout << a[i] << endl;
}
return 0;
}