标题:六角填数
如图【1.png】所示六角形中,填入1~12的数字。
使得每条直线上的数字之和都相同。
图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?
请通过浏览器提交答案,不要填写多余的内容。
#include<iostream>
#include<cstring>
using namespace std;
int num[]={2,4,5,6,7,9,10,11,12};
int vis[9];
int a[10];
bool judge()
{
int t1,t2,t3,t4,t5,t6;
t1=1+a[2]+a[4]+a[8];
t2=1+a[1]+a[5]+a[9];
t3=a[5]+a[6]+a[7]+a[8];
t4=8+a[1]+a[2]+a[3];
t5=8+a[6]+a[9]+3;
t6=3+a[3]+a[4]+a[7];
if(t1==t2&&t2==t3&&t3==t4&&t4==t5&&t5==t6)
{
printf("%d\n",a[9]);
return 1;
}
return 0;
}
void dfs(int n)
{
if(n==10&&judge())
return ;
for(int i=0;i<9;i++)
{
if(!vis[i])
{
a[n]=num[i];
vis[i]=1;
dfs(n+1);
vis[i]=0;
}
}
}
int main()
{
memset(vis,0,sizeof(vis));
dfs(1);
return 0;
}