Problem Description
所示六角形中,填入1~12的数字。 使得每条直线上的数字之和都相同。
图中已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?
图中已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?
Input
无
Output
输出一个整数
#include <iostream>
#include <string.h>
using namespace std;
int a[13];
int used[13]={0};
bool judge(){
int r1,r2,r3,r4,r5,r6;
r1=a[2]+a[6]+a[9]+a[12];
r2=a[5]+a[7]+a[10]+a[12];
r3=a[2]+a[3]+a[4]+a[5];
r4=a[1]+a[3]+a[6]+a[8];
r5=a[8]+a[9]+a[10]+a[11];
r6=a[1]+a[4]+a[7]+a[11];
if(r1==r2&&r2==r3&&r3==r4&&r4==r5&&r5==r6)
return true;
else
return false;
}
void sortnum(int k){
int i;
if(k==1 || k==2 || k==12){
sortnum(k+1);
return;
}
if(k>12){
if(judge()){
cout<<a[6];
return;
}
else
return;
}
else{
for(i=2;i<13;i++){
if(!used[i]){
used[i]=1;
a[k]=i;
sortnum(k+1);
used[i]=0;
}
}
}
}
int main(){
memset(used,0,sizeof(used));
a[1]=1,used[1]=1;
a[2]=8,used[8]=1;
a[12]=3,used[3]=1;
sortnum(1);
return 0;
}
答案:10