题目
思路来源
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;
}