蓝桥杯 幻方填空(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;
} 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code92007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值