六角填数

来源:互联网 发布:vb as boolean 编辑:程序博客网 时间:2024/04/28 05:06

六角填数

 

    如图【1.png】所示六角形中,填入1~12的数字。

 

    使得每条直线上的数字之和都相同。

 

    图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?

 

请通过浏览器提交答案,不要填写多余的内容。

#include <stdio.h>int a[15] = {0};int b[13] = {1,1,0,1,0,0,0,0,1,0,0,0,0}; //标记数组。记录哪几个数用过了哪几个没用。int judge(){    if((a[2]+a[3]+a[4]+a[5] == a[8]+a[9]+a[10]+a[11]) && (a[2]+a[3]+a[4]+a[5] == a[1]+a[3]+a[6]+a[8]) && (a[2]+a[3]+a[4]+a[5] == a[2]+a[6]+a[9]+a[12]) && (a[2]+a[3]+a[4]+a[5] == a[1]+a[4]+a[7]+a[11]) && (a[2]+a[3]+a[4]+a[5] == a[5]+a[7]+a[10]+a[12]) &&(a[8]+a[9]+a[10]+a[11] == a[1]+a[3]+a[6]+a[8]) && (a[8]+a[9]+a[10]+a[11] == a[2]+a[6]+a[9]+a[12]) && (a[8]+a[9]+a[10]+a[11] == a[1]+a[4]+a[7]+a[11]) && (a[8]+a[9]+a[10]+a[11] == a[5]+a[7]+a[10]+a[12]) &&(a[1]+a[3]+a[6]+a[8] == a[2]+a[6]+a[9]+a[12]) && (a[1]+a[3]+a[6]+a[8] == a[1]+a[4]+a[7]+a[11]) && (a[1]+a[3]+a[6]+a[8] == a[5]+a[7]+a[10]+a[12]) &&(a[2]+a[6]+a[9]+a[12] == a[1]+a[4]+a[7]+a[11]) && (a[2]+a[6]+a[9]+a[12] == a[5]+a[7]+a[10]+a[12]) &&(a[1]+a[4]+a[7]+a[11] == a[5]+a[7]+a[10]+a[12]))       return 1;    else        return 0;}void dfs(int i, int x){    if(i == 12)    {        if(judge() == 1)            for(int k = 1 ; k <= 12 ; k++)            printf("%d:%d, ", k, a[k]);        return;    }    for(int j = 2 ; j <=12 ; j++)    {        if(b[j] == 1)            continue;        b[j] = 1;        a[i] = j;        dfs(i+1, j);        b[j] = 0;    }}int main(){    a[1] = 1;    a[2] = 8;    a[12] = 3;    dfs(3, 2);    return 0;}

0 0