题目:
问题描述
  小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行、每一列和每一条对角线的和都是相同的。

三阶幻方又被称作九宫格,在小学奥数里有一句非常有名的口诀:“二四为肩,六八为足,左三右七,戴九履一,五居其中”,通过这样的一句口诀就能够非常完美的构造出一个九宫格来。

4 9 2
  3 5 7
  8 1 6

有意思的是,所有的三阶幻方,都可以通过这样一个九宫格进行若干镜像和旋转操作之后得到。现在小明准备将一个三阶幻方(不一定是上图中的那个)中的一些数抹掉,交给邻居家的小朋友来进行还原,并且希望她能够判断出究竟是不是只有一个解。

而你呢,也被小明交付了同样的任务,但是不同的是,你需要写一个程序~
输入格式
  输入仅包含单组测试数据。
  每组测试数据为一个3*3的矩阵,其中为0的部分表示被小明抹去的部分。
  对于100%的数据,满足给出的矩阵至少能还原出一组可行的三阶幻方。
输出格式
  如果仅能还原出一组可行的三阶幻方,则将其输出,否则输出“Too Many”(不包含引号)。
样例输入
0 7 2
0 5 0
0 3 0
样例输出
6 7 2
1 5 9
8 3 4
数据规模和约定
  峰值内存消耗(含虚拟机) < 256M
  CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

注意:
  main函数需要返回0;
  只使用ANSI C/ANSI C++ 标准;
  不要调用依赖于编译环境或操作系统的特殊函数。
  所有依赖的函数必须明确地在源文件中 #include
  不能通过工程设置而省略常用头文件。

提交程序时,注意选择所期望的语言类型和编译器类型。

--------------

笨笨有话说:
  我最喜欢这类题目了。既然九宫幻方一共也没有多少,我就不辞辛劳地一个一个写出来好了。
  也不能太过分,好歹用个数组。

代码实现

#include<iostream>
int a[4][4] = { 0 };   //从【1】【1】到【3】【3】
int ans[4][4] = { 0 }; //从【1】【1】到【3】【3】
int num[10] = {0};     //序号从0-8,保存数组数据
int count = 0;         //检测有多少个结果
int show[10] = { 0 };  //序号从1-9,检测1-9是否出现
bool judge()
{for (int i = 0; i < 9; i++)if (num[i] == 0)return false;if (a[1][1] + a[1][2] + a[1][3] == a[2][1] + a[2][2] + a[2][3] && a[2][1] + a[2][2] + a[2][3] == a[3][1] + a[3][2] + a[3][3] &&a[1][1] + a[2][1] + a[3][1] == a[1][2] + a[2][2] + a[3][2] && a[1][2] + a[2][2] + a[3][2] == a[1][3] + a[2][3] + a[3][3] &&a[1][1] + a[2][2] + a[3][3] == a[1][3] + a[2][2] + a[3][1])return true;elsereturn false;
}
void dfs(int step)
{if (step == 9){if (judge()){count += 1;for (int i = 1; i <= 3; i++)for (int j = 1; j <= 3; j++)ans[i][j] = a[i][j];}return;}if (num[step] != 0)dfs(step + 1);else{for (int i = 1; i < 10; i++){if (show[i])continue;else{num[step] = i;show[i] = 1;a[step / 3 + 1][step % 3 + 1] = i;dfs(step + 1);num[step] = 0;a[step / 3 + 1][step % 3 + 1] = 0;show[i] = 0;}}//std::cout << step << '\n';}
}
int main()
{   for (int i = 1; i <= 3; i++)for (int j = 1; j <= 3; j++){std::cin >> a[i][j];num[i * 3 + j - 4] = a[i][j];show[a[i][j]] = 1;}dfs(0);if (count == 1){for (int i = 1; i <= 3; i++){for (int j = 1; j < 3; j++)std::cout << ans[i][j] << ' ';std::cout << ans[i][3] << '\n';}}elsestd::cout << "Too many";return 0;
}

不用using namespace std原因是命名空间有个count,和我的撞了;

参考:
https://blog.csdn.net/qq_36338754/article/details/79727955?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161529424816780265419110%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161529424816780265419110&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-6-79727955.first_rank_v2_pc_rank_v29&utm_term=%E8%93%9D%E6%A1%A5%E6%9D%AF%E4%B9%9D%E5%AE%AB%E5%B9%BB%E6%96%B9

萌新第一次做蓝桥杯题目,蓝桥杯选手冲冲冲!

蓝桥杯题目:九宫幻方(C++实现)(DFC)(打卡1)相关推荐

  1. python 九宫重排_Python蓝桥杯练习 九宫重排

    Python蓝桥杯练习 九宫重排 问题描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成第二个图所示的局面 ...

  2. 蓝桥杯题目——带分数

    文章目录 前言 解题思路 全排列方法 递归实现 循环实现 组合数方法 循环实现 递归实现 浮点转整型思想 前言 本文介绍蓝桥杯题目--带分数,并且对其中包含的方法与思想进行总结,本文是上半部分. 参考 ...

  3. 蓝桥杯题目练习 提升篇 [蓝桥杯2019初赛]迷宫

    [蓝桥杯2019初赛]迷宫 题目描述 下图给出了一个迷宫的平面图,其中标记为1 的为障碍,标记为0 的为可 以通行的地方. 010000 000100 001001 110000 迷宫的入口为左上角, ...

  4. 【蓝桥杯】九宫重排(bfs模板题)

    题目描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成第二个图所示的局面. 我们把第一个图的局面记为:12 ...

  5. 蓝桥杯-题目:猜算式

    题目:猜算式 你一定还记得小学学习过的乘法计算过程,比如: 273 x 15 ------ 1365 273 ------ 4095 请你观察如下的乘法算式 *** x *** -------- ** ...

  6. 2013年蓝桥杯题目与解答

    1. 题目标题: 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记. 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天 ...

  7. 蓝桥杯题目练习(旅行家的预算)

    算法训练VIP 旅行家的预算 原题链接:旅行家的预算 题目描述 一个旅行家想驾驶汽车以最少的费用从一个城市 到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C(以升为单 ...

  8. 蓝桥杯题目练习(JAM计数法)

    算法训练VIP JAM计数法 题目描述 Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数都是相同的 ...

  9. 蓝桥杯题目 2682: 蓝桥杯2022年第十三届省赛真题-GCD

    题目描述 给定两个不同的正整数 a, b,求一个正整数 k 使得 gcd(a + k, b + k) 尽可能大,其中 gcd(a, b) 表示 a 和 b 的最大公约数,如果存在多个 k,请输出所有满 ...

最新文章

  1. OLTP系统的Oracle RAC性能调优,索引分区极大提升提交性能
  2. [剑指Offer]替换空格
  3. 大样品随机双盲测试_训练和测试样品生成
  4. 小货车DataAdapter对象 1129
  5. 手机MODEM开发(31)---LTE 速率低
  6. 重磅!百度飞桨开源语音基础模型库|中英文语音识别、语音翻译、语音合成、声音分类通通一行代码轻松搞定...
  7. python中response对象的属性_关于python:AttributeError:’HTTPResponse’对象没有属性’split’...
  8. spider RPC过滤器
  9. 分布式 NewSQL 数据库TiDB 3.1.0 版本发布,修复多项问题
  10. 整理一些ChartControl控件属性
  11. 大话设计模式 设计模式书籍 编程书籍
  12. 《PMP学习笔记》11.6 子过程:规划风险应对
  13. 注塑机服务器显示e011,一种注塑机工业4.0联网系统以及监控方法
  14. 渲染书籍目录汇总(不断更新中...)
  15. 计算机教师道德模范事迹材料,优秀道德模范教师先进事迹材料
  16. Ocelot.Authorization.Middleware.AuthorizationMiddleware[0] requestId: 0HMJ300E5APNA:00000002...
  17. 《Google SRE》读后感
  18. win10间歇性闪屏_Win10桌面屏幕不断忽闪忽现出现闪屏bug,该怎么办?
  19. java 随机16位随机数字_随机生成防猜不重复的16位纯数字序列号【快速且高性能】...
  20. 《手把手构建人工智能产品》-产品经理的AI实操手册

热门文章

  1. 没想到吧,这就是算法工程师的一天!
  2. Android Studio 获取手机联系人并进行,发短信,打电话,增删改操作
  3. Office2010:为什么我的PPT需要修复?
  4. jq 手风琴折叠菜单 js滚动效果 collapse.js slideUp()
  5. [TextMatch框架] 简介
  6. FTP文件传输协议原理详解(两种工作模式)
  7. @ViewBuilder 在自定义 View 中的使用
  8. vue-router之addRoutes(动态路由/权限路由)使用分析
  9. Android应用在国外之各种广告集成(Vungle,AppLovin,Google,Facebook)
  10. 《生成式对抗网络GAN的研究进展与展望》论文笔记