蓝桥杯 幻方填空(dfs/穷竭搜索)

题目

思路来源

https://blog.csdn.net/qq_36238595/article/details/55802919

题解

全排列,暴力check

用手生敲,毕竟搞映射代码量也少不到哪里去

配合草稿纸画就完事了

心得

打个纯暴力可能也就10min

但是能骗出一道填空题

QAQ也许搜索会写得更优美

然而 然而考场还是时间要紧叭 骗分主义.jpg

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
int sum[16];
int num[16],cnt;
int ans;
void init()
{
	for(int i=2;i<=8;++i)
	num[cnt++]=i;
	num[cnt++]=10;
	num[cnt++]=12;
	num[cnt++]=14;
}
int main()
{
	init();
    do
    {
    	sum[0]=    16+num[0]+num[1]+    13;
    	sum[1]=num[2]+num[3]+    11+num[4];
    	sum[2]=     9+num[5]+num[6]+num[7];
    	sum[3]=num[8]+    15+num[9]+     1;
    	sum[4]=    16+num[2]+     9+num[8];
    	sum[5]=num[0]+num[3]+num[5]+    15;
    	sum[6]=num[1]+    11+num[6]+num[9];
    	sum[7]=    13+num[4]+num[7]+     1;
    	sum[8]=    16+num[3]+num[6]+     1;
    	sum[9]=    13+    11+num[5]+num[8];
    	ans=0;
    	for(int i=1;i<=9;++i)
    	if(sum[i]==sum[i-1])ans++;
    	if(ans==9)printf("%d\n",num[7]);
    }while(next_permutation(num,num+10));
    //O(9*10!)
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/Code92007/article/details/88699367