*/
这是以前的比赛题,就当是练练手了,不算难
#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; }新闻热点
疑难解答