如图【1.png】所示六角形中,填入1~12的数字。
使得每条直线上的数字之和都相同。
图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?
使得每条直线上的数字之和都相同。
图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?
请通过浏览器提交答案,不要填写多余的内容。
解题思路,个人喜欢简单明了的方法,暴力解题更容易想得到,更容易理解。当然如果能想到好的方法,更短的代码也是可以的
以下两种方法
#include <stdio.h>
#include<string.h>
int a[15],vis[15];
void DFS(int x)
{
if(x==1 || x==2 || x==12)
{
DFS(x+1); return ;
}
if(x>12)
{
int b[6];
b[0]=a[1]+a[3]+a[6]+a[8];
b[1]=a[1]+a[4]+a[7]+a[11];
b[2]=a[2]+a[3]+a[4]+a[5];
b[3]=a[2]+a[6]+a[9]+a[12];
b[4]=a[8]+a[9]+a[10]+a[11];
b[5]=a[5]+a[7]+a[10]+a[12];
for(int j=1;j<6;j++)
if(b[j-1]!=b[j])
return ;
printf("%d\n",a[6]);
return ;
}
for(int i=2;i<=12;i++)
if(vis[i]==0)
{
vis[i]=1;
a[x]=i;
DFS(x+1);
vis[i]=0;
}
}
int main()
{
memset(vis,0,sizeof(vis));
a[1]=1; vis[1]=1;
a[2]=8; vis[8]=1;
a[12]=3; vis[3]=1;
DFS(1);
return 0;
}
选择一种自己喜欢的解题思路会提高做题效率
#include<iostream>
using namespace std;
int main()
{
int a1=1,a2=8,a12=3;//已知条件,
for(int a3=1;a3<13;a3++)
{
if(a1!=a3&&a2!=a3)
for(int a4=1;a4<13;a4++)
{
if(a1!=a4&&a2!=a4&&a3!=a4)
for(int a5=1;a5<13;a5++)
{
if(a1!=a5&&a2!=a5&&a3!=a5&&a4!=a5)
for(int a6=1;a6<13;a6++)
{
if(a1!=a6&&a2!=a6&&a3!=a6&&a4!=a6&&a5!=a6)
for(int a7=1;a7<13;a7++)
{
if(a1!=a7&&a2!=a7&&a3!=a7&&a4!=a7&&a5!=a7&&a6!=a7)
for(int a8=1;a8<13;a8++)
{
if(a1!=a8&&a2!=a8&&a3!=a8&&a4!=a8&&a5!=a8&&a6!=a8&&a7!=a8)
for(int a9=1;a9<13;a9++)
{
if(a1!=a9&&a2!=a9&&a3!=a9&&a4!=a9&&a5!=a9&&a6!=a9&&a7!=a9&&a8!=a9)
for(int a10=1;a10<13;a10++)
{
if(a1!=a10&&a2!=a10&&a3!=a10&&a4!=a10&&a5!=a10&&a6!=a10&&a7!=a10&&a8!=a10&&a9!=a10)
for(int a11=1;a11<13;a11++)
{
if(a1!=a11&&a2!=a11&&a3!=a11&&a4!=a11&&a5!=a11&&a6!=a11&&a7!=a11&&a8!=a11&&a9!=a11&&a10!=a11)
if(a1!=a12&&a2!=a12&&a3!=a12&&a4!=a12&&a5!=a12&&a6!=a12&&a7!=a12&&a8!=a12&&a9!=a12&&a10!=a12&&a11!=a12)
{
int b1=a1+a3+a6+a8;
int b2=a1+a4+a7+a11;
int b3=a8+a9+a10+a11;
int b4=a2+a3+a4+a5;
int b5=a2+a6+a9+a12;
int b6=a5+a7+a10+a12;
if(b1==b2&&b1==b3&&b1==b4&&b1==b5&&b1==b6&&b2==b3&&b2==b4&&b2==b5&&b2==b6&&b3==b4&&b3==b5&&b3==b6&&b4==b5&&b4==b6&&b5==b6)
{
cout<<a6<<endl;
}
}
}
}
}
}
}
}
}
}
}
return 0;
}
以上仅供参考,解题的方法不只有一种!