首页 > 学院 > 开发设计 > 正文

六角填数

2019-11-06 07:21:50
字体:
来源:转载
供稿:网友
/*标题:六角填数    如图【1.png】所示六角形中,填入1~12的数字。    使得每条直线上的数字之和都相同。    图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?

*/

这是以前的比赛题,就当是练练手了,不算难

#include <iostream>#include <cstdio>#include <cmath>#include <cstring>using namespace std;#define N 15int a[N];bool vis[N] ;void dfs(int x){if(x == 1 ||x == 2 || x == 12){dfs(x+1);   return;}if(x>12){int t[6];t[0] = a[1] +a[3] + a[6] + a[8];t[1] = a[1] +a[4] + a[7] + a[11];t[2] = a[2] +a[3] + a[4] + a[5];t[3] = a[2] +a[6] + a[9] + a[12];t[4] = a[8] +a[9] + a[10] + a[11];t[5] = a[5] +a[7] + a[10] + a[12];for(int i = 1;i < 6;i++){if(t[i] != t[i-1])return ;}//cout<<a[6]<<endl;PRintf("%d/n",a[6]);return;}for(int i = 1;i < 13;i++){if(!vis[i]){  vis[i] = 1;  a[x] = i;  dfs(x+1);  vis[i] = 0;} } } int main(){memset(vis,0,sizeof(vis));vis[1] = 1;a[1] = 1;vis[8] = 1;a[2] = 8;vis[3] = 1;a[12] = 3;dfs(1);//从1开始深搜,1-12遍历,并且初始化1,8,3 return 0; }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表