【HihoCoder - 1268】九宫 (dfs,深搜)

题干:

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

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

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

而你呢,也被小Hi交付了同样的任务,但是不同的是,你需要写一个程序~

Input

输入仅包含单组测试数据。

每组测试数据为一个3*3的矩阵,其中为0的部分表示被小Hi抹去的部分。

对于100%的数据,满足给出的矩阵至少能还原出一组可行的三阶幻方。

Output

如果仅能还原出一组可行的三阶幻方,则将其输出,否则输出“Too Many”(不包含引号)。

Sample Input

0 7 2
0 5 0
0 3 0

Sample Output

6 7 2
1 5 9
8 3 4

解题报告:

    简化版的数独。POJ2676 - 数独

   这题要注意两个地方,ok函数中注释掉的那一部分,如果用那一部分,也可以ac。第二就是,如果用了这个第一部分,记住a数组一定要开15,开14就炸了。。。因为你是从1开始的啊!不然就会越界了、

AC代码:

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int maze[4][4];
bool book[10];
int cpy[4][4];
int a[100];
int cnt;
bool ok();
void dfs(int x,int y);
void aprint();
int main()
{int tmp;for(int i=1;i<=3;i++){for(int j=1;j<=3;j++){scanf("%d",&tmp);maze[i][j]=tmp;book[tmp]=true;}}dfs(1,1);if(cnt==1) {aprint();}else {printf("Too Many");}return 0 ;
}
void dfs(int x,int y){
//	printf("");if(x==4&&y==1){if(ok()){cnt++;for(int i=1;i<=3;i++){for(int j=1;j<=3;j++){cpy[i][j]=maze[i][j];}}}return;}if(maze[x][y]==0){for(int i=1;i<10;i++){if(!book[i]){book[i]=1;maze[x][y]=i;if(y==3){dfs(x+1,1);}else{dfs(x,y+1);}maze[x][y]=0;book[i]=0;}}}else{if(y==3){dfs(x+1,1);}else{dfs(x,y+1);}}
}
bool ok(){int a[15]={0};int flag=1;a[1]=maze[1][1]+maze[1][2]+maze[1][3];a[2]=maze[2][1]+maze[2][2]+maze[2][3];a[3]=maze[3][1]+maze[3][2]+maze[3][3];a[4]=maze[1][1]+maze[2][1]+maze[3][1];a[5]=maze[1][2]+maze[2][2]+maze[3][2];a[6]=maze[1][3]+maze[2][3]+maze[3][3];a[7]=maze[1][1]+maze[2][2]+maze[3][3];a[8]=maze[3][1]+maze[2][2]+maze[1][3];for(int i=1;i<=8;i++){if(a[i]!=15) flag=0;}return flag;
//	int r1=maze[1][1]+maze[1][2]+maze[1][3];
//	int r2=maze[2][1]+maze[2][2]+maze[2][3];
//	int r3=maze[3][1]+maze[3][2]+maze[3][3];
//	int c1=maze[1][1]+maze[2][1]+maze[3][1];
//	int c2=maze[1][2]+maze[2][2]+maze[3][2];
//	int c3=maze[1][3]+maze[2][3]+maze[3][3];
//	int dui1=maze[1][1]+maze[2][2]+maze[3][3];
//	int dui2=maze[3][1]+maze[2][2]+maze[1][3];
//	a[r1]++;a[r2]++;a[r3]++;a[c1]++;a[c2]++;a[c3]++;a[dui1]++;a[dui2]++;
//	if(a[15]==8) {
//		return true;
//	}
//	else return false;
}
void aprint(){for(int i=1;i<=3;i++){for(int j=1;j<=3;j++){printf("%d",cpy[i][j]);if(j==3){cout <<endl;}else{printf(" ");}}}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/441807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

河北师范大学计算机应用技术分数线,2019年河北师范大学各专业录取分数线

高考总分达到或超过某一分数线的考生档案&#xff0c;才有资格被招生高校调阅并选择录取。各高校不同专业每一年的录取分数线有所区别&#xff0c;下文是小编给大家整理的2019年河北师范大学各省各专业高考录取分数线详情&#xff0c;供参考&#xff01;2019河北师范大学各省各…

mysql in partition_MySQL Partition分区扫盲

MySQL从5.1.3开始支持Partition&#xff0c;你可以使用如下命令来确认你的版本是否支持Partition&#xff1a;mysql> SHOW VARIABLES LIKE %partition%;--------------------------| Variable_name | Value |--------------------------| have_partitioning | YES |--------…

【HihoCoder - 1662】查找三阶幻方 (九宫)(暴力)

题干&#xff1a; 给定一个N x M的矩阵&#xff0c;请你数一数其中有多少个3 x 3的子矩阵可以构成三阶幻方&#xff1f; 如果3 x 3的矩阵中每一行、每一列和两条对角线上的3个数之和都相等&#xff0c;我们就认为其构成一个三阶幻方。 Input 第一行包含两个整数N和M。(1 …

mysql主从结构主数据库_mysql主从结构主数据库中的日志

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航&#xff0c;为用户…

计算机英语反思总结,计算机在英语教学中辅助作用的反思

计算机在英语教学中辅助作用的反思 (3页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;9.9 积分题目&#xff1a;计算机在英语教学中辅助作用的反思科目&#xff1a; SS 学校&#xff1a; 灵石第一职…

C 的Pair用法分类整理(精)

1 pair的应用 pair是将2个数据组合成一个数据&#xff0c;当需要这样的需求时就可以使用pair&#xff0c;如stl中的map就是将key和value放在一起来保存。另一个应用是&#xff0c;当一个函数需要返回2个数据的时候&#xff0c;可以选择pair。 pair的实现是一个结构体&#xff…

mysql创建数据库没有默认值报错_详解Mysql数据库date, datetime类型设置0000-00-00默认值(default)报错问题...

现象:MySQL5.7版本之后,date, datetime类型设置默认值"0000-00-00",出现异常:Invalid default value for time原因:在命令行窗口查看当前的sql_mode配置:select sql_mode;结果如下:ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE,ERROR_FO…

计算机专业英语霍洪涛出版社,计算机专业英语(霍洪涛)课件Chapter 4.ppt

计算机专业英语(霍洪涛)课件Chapter 4谢谢 * Chapter 4 Operating System Review 前驱&#xff0c;前任 后继&#xff0c;继任 常见的 足够的 有时&#xff1b;在某种情况下 不局限于 目录&#xff0c;存货清单 支付、支出 伪码 * predecessor successor commonplace not limit…

【HDU - 2102】A计划 (麻烦一点的bfs)

题干&#xff1a; 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后&#xff0c;而今&#xff0c;不幸的她再一次面临生命的考验。魔王已经发出消息说将在T时刻吃掉公主&#xff0c;因为他听信谣言说吃公主的肉也能长生不老。年迈的国王正是心急如焚&#xff0c;告招天下…

ubuntu cpp与mysql连接_linux(ubuntu)下C++访问mysql数据库

向表中插入(删除)一条数据 #include #include using namespace std;int main(int argc, char* argv[]){//准备mysql的访问结构MYSQL mysql;mysql_init( &mysql );mysql_real_connect(&mysql,"192.168.16.114",//要访问数据库的IP地址"root",//用户…

渤海船舶职业学院计算机应用公司,渤海船舶职业学院

2016年招生章程已经公布&#xff0c;出国留学网高考网为大家提供2016年渤海船舶职业学院招生章程已公布&#xff0c;更多高考招生信息请关注我们网站的更新!渤海船舶职业学院2016年招生章程一、学校自然情况说明学校全称&#xff1a;渤海船舶职业学院办学地点及校址&#xff1a…

C++手动开启O2优化(以及-O -O1 -O2 -O3优化的知识点)(竞赛可用)

O1优化会消耗少多的编译时间&#xff0c;它主要对代码的分支&#xff0c;常量以及表达式等进行优化。 O2会尝试更多的寄存器级的优化以及指令级的优化&#xff0c;它会在编译期间占用更多的内存和编译时间。 O3在O2的基础上进行更多的优化&#xff0c;例如使用伪寄存器网络&a…

nginx pdo_mysql_lnmp环境,安装PHP7的扩展pdo_mysql报错的问题?

环境信息&#xff1a;centos7.4 php7.2 mysql5.71.php是编译安装的2.MySQL是用rpm安装的mysql-community-client-5.7.23-1.el7.x86_64.rpmmysql-community-common-5.7.23-1.el7.x86_64.rpmmysql-community-devel-5.7.23-1.el7.x86_64.rpmmysql-community-embedded-5.7.23-1.el7…

【qduoj - 1010】easy problem(巧妙的枚举)

题干&#xff1a; 给你一个数字N&#xff0c;N的范围是1~1000000&#xff0c;求一个最小的正整数M&#xff0c;这个数字M的各个位的数字加上它本身之和恰好为N。当然&#xff0c;如果没有解&#xff0c;输出0。 输入 输入数据由多组数据组成&#xff0c;每行由一个数字N组成…

电大mysql实验作业_成教作业网提供国开电大 MySQl数据库应用 实验训练4答案

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼实验训练4&#xff1a;数据库系统维护实验目的&#xff1a;基于实验1创建的汽车用品网上商城&#xff0c;练习创建用户、权限管理&#xff0c;数据库备份与恢复方法&#xff0c;数据导出导入的方法&#xff0c;体会数据库系统维护的…

小学教师计算机国培培训总结,小学教师国培培训心得体会

短暂而又漫长的国培结束了&#xff0c;在这三个月里&#xff0c;收获很大&#xff0c;但最大的收获是思想的转变&#xff0c;此次培训活动安排分三个阶段&#xff1a;第一阶段&#xff0c;理论学习(1 0天);第二阶段&#xff0c;教学实践 (基地学习50天);第三阶段&#xff0c;集…

【qduoj - 1012】反转数字(模拟,水题)

题干&#xff1a; 反转数字 描述 输入一个 c 语言 4字节 int 范围内的数字&#xff0c;输出它反转后的数字。比如12345反转后是54321&#xff0c;-12345反转后是-54321。如果反转后的数字不在 int 范围内就输出0&#xff1b; 输入 每行一个 int 范围内的数字&#xff0c;以 …

mysql group 条件_mysql 的group by 满足的规则要求:

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。本文链接&#xff1a;https://blog.csdn.net/u011066470/article/details/97291377————————————————GROUP BY满足的规则:所有sele…

计算机网络技术局域网作业,计算机网络作业局域网搭建注意事项.ppt

计算机网络作业局域网搭建注意事项计算机网络基础与应用技术 第6章 局域网技术 6.1 局域网概述 6.1.1 局域网的定义与特点 6.1.1 局域网的定义与特点 6.1.2 局域网的组建模式 6.1.2 局域网的组建模式 6.1.2 局域网的组建模式 6.1.2 局域网的组建模式 6.1.3 组建对等网 6.1.3 组…

【qduoj - 1011】数组中出现最多的元素(巧妙方法 或 排序 或 map)

题干&#xff1a; 描述 给你一个数组&#xff0c;输出里面出现超过1/2的元素。保证有且只有一个解。 输入 第一行是一个整数&#xff0c;表示测试数据的组数 n&#xff0c;n < 1000万 之后每一行都是一个整数。 输出 输出出现超过1/2的那个数字。 输入样例 1 5 1 1 …