UESTC - 1222 Sudoku(深搜)
Yi Sima was one of the best counselors of Cao Cao. He likes to play a funny game himself. It looks like the modern Sudoku, but smaller.
Actually, Yi Sima was playing it different. First of all, he tried to generate a 4×44×4 board with every row contains 11 to 44 , every column contains 11 to 44 .
Also he made sure that if we cut the board into four 2×22×2
pieces, every piece contains 11
to 44
.
Then, he removed several numbers from the board and gave it to another guy to recover it. As other counselors are not as smart as Yi Sima, Yi Sima always made sure that the
board only has one way to recover.
Actually, you are seeing this because you've passed through to the Three-Kingdom Age. You can recover the board to make Yi Sima happy and be promoted. Go and do it!!!
Input
The first line of the input gives the number of test cases, TT
(1≤T≤1001≤T≤100
). TT
test cases follow. Each test case starts with an empty line followed by 44
lines.
Each line consist of 44
characters. Each character represents the number in the corresponding cell (one of 1, 2, 3, 4). * represents that number was removed by Yi Sima.
It's guaranteed that there will be exactly one way to recover the board.
Output
For each test case, output one line containing Case #x:, where xx
is the test case number (starting from 11
).
Then output 44
lines with 44
characters each. indicate the recovered board.
Sample Input
3 ****
2341
4123
3214 *243
*312
*421
*134 *41*
**3*
2*41
4*2*
Sample Output
Case #1:
1432
2341
4123
3214
Case #2:
1243
4312
3421
2134
Case #3:
3412
1234
2341
4123
题意:一个4*4的矩阵,满足每个数的同行同列都由1234构成的,把4*4矩阵分成4个2*2矩阵,每个矩阵的四个元素也分别
为1234。
这题就是暴力深搜。
ac代码:
1 #include<cstdio>
2 #include<cstring>
3 #define Max 8
4 char st[Max][Max];
5 int judg(int x,int y,char i) //判断当前位置可以是什么数字
6 {
7 if(x<3&&y<3)
8 {
9 if(st[1][1]==i||st[1][2]==i||st[2][1]==i||st[2][2]==i)
10 return 0;
11 }
12 else if(x<3&&y>2)
13 {
14 if(st[1][3]==i||st[1][4]==i||st[2][3]==i||st[2][4]==i)
15 return 0;
16 }
17 else if(x>2&&y<3)
18 {
19 if(st[3][1]==i||st[3][2]==i||st[4][1]==i||st[4][2]==i)
20 return 0;
21 }
22 else if(x>2&&y>2)
23 {
24 if(st[3][3]==i||st[3][4]==i||st[4][3]==i||st[4][4]==i)
25 return 0;
26 }
27 for(int k=1;k<=4;k++)
28 {
29 if(st[x][k]==i||st[k][y]==i)
30 return 0;
31 }
32 return 1;
33 }
34 void dfs(int x,int y)
35 {
36 if(x==5)
37 {
38 for(int i=1;i<=4;i++)
39 printf("%s\n",st[i]+1);
40 return ;
41 }
42 if(st[x][y]!='*')
43 {
44 if(y==4)
45 dfs(x+1,1);
46 else
47 dfs(x,y+1);
48 }
49 else
50 {
51 for(int i=1;i<=4;i++)
52 {
53 if(judg(x,y,i+'0'))
54 {
55 st[x][y]=i+'0';
56 if(y==4)
57 dfs(x+1,1);
58 else
59 dfs(x,y+1);
60 st[x][y]='*'; //如果没有满足的则回溯
61 }
62 }
63 }
64 }
65 int main()
66 {
67 int t;
68 scanf("%d",&t);
69 getchar();
70 for(int i=1;i<=t;i++)
71 {
72 for(int j=1;j<=4;j++)
73 scanf("%s",st[j]+1);
74 printf("Case #%d:\n",i);
75 dfs(1,1);
76 }
77 return 0;
78 }
UESTC - 1222 Sudoku(深搜)的更多相关文章
- UESTC 1222 Sudoku
爆搜即可 /* *********************************************** author : email :523689985@qq.com created tim ...
- ACM学习历程—UESTC 1222 Sudoku(矩阵)(2015CCPC H)
题目链接:http://acm.uestc.edu.cn/#/problem/show/1226 题目大意就是构造一个行列和每个角的2*2都是1234的4*4矩阵. 用dfs暴力搜索,不过需要每一步进 ...
- 深搜+回溯 POJ 2676 Sudoku
POJ 2676 Sudoku Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17627 Accepted: 8538 ...
- 数独(深搜)(poj2726,poj3074)
数独(深搜)数据最弱版本(poj 2676) Description Sudoku is a very simple task. A square table with 9 rows and 9 co ...
- HDU--杭电--1195--Open the Lock--深搜--都用双向广搜,弱爆了,看题了没?语文没过关吧?暴力深搜难道我会害羞?
这个题我看了,都是推荐的神马双向广搜,难道这个深搜你们都木有发现?还是特意留个机会给我装逼? Open the Lock Time Limit: 2000/1000 MS (Java/Others) ...
- 利用深搜和宽搜两种算法解决TreeView控件加载文件的问题。
利用TreeView控件加载文件,必须遍历处所有的文件和文件夹. 深搜算法用到了递归. using System; using System.Collections.Generic; using Sy ...
- 2016弱校联盟十一专场10.3---Similarity of Subtrees(深搜+hash、映射)
题目链接 https://acm.bnu.edu.cn/v3/problem_show.php?pid=52310 problem description Define the depth of a ...
- 2016弱校联盟十一专场10.2---Around the World(深搜+组合数、逆元)
题目链接 https://acm.bnu.edu.cn/v3/problem_show.php?pid=52305 problem description In ICPCCamp, there ar ...
- 2015暑假多校联合---Cake(深搜)
题目链接:HDU 5355 http://acm.split.hdu.edu.cn/showproblem.php?pid=5355 Problem Description There are m s ...
随机推荐
- PAT练习num1-害死人补偿命的3n+1猜想
卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 ( 砍掉一半.这样一直反复砍下去,最后一定在某一步得到 n=1.卡拉兹在 1950 年的世界 ...
- 彻底解决小程序无法触发SESSION问题
一.首先找到第一次发起网络请求的地址,将服务器返回set-cookie当全局变量存储起来 wx.request({ ...... success: function(res) { console.lo ...
- Java并发包源码学习系列:阻塞队列实现之ArrayBlockingQueue源码解析
目录 ArrayBlockingQueue概述 类图结构及重要字段 构造器 出队和入队操作 入队enqueue 出队dequeue 阻塞式操作 E take() 阻塞式获取 void put(E e) ...
- 在vCenter Server中添加ESXi 主机失败的问题
报错:出现了常规系统错误: Timed out waiting for vpxa to start 报错是这个,我看了下vcenter的版本是6.5,如图右上,这个报错是因为我ESXI主机是6.7的, ...
- Qt QMenuBar和QMenu以及QAction巧妙的使用方法
这里简单介绍QMenuBar和QMenu以及QAction是什么,其详细功能本文不做介绍,如果还不了解的朋友可以查阅Qt的帮助手册或浏览其它相关博客.如下图,软件中蓝色条框是QMenuBar用来承载Q ...
- Netty之Unpooled_Bytebuf
前言 计算机存储基本单位是字节(byte),传输基本单位是bit(位),JAVA NIO提供了ByteBuffer等七种容器来提升传输时的效率,但是在使用时比较复杂,经常要进行读写切换,主要缺点如下: ...
- 中文电子病历命名实体识别(CNER)研究进展
中文电子病历命名实体识别(CNER)研究进展 中文电子病历命名实体识别(Chinese Clinical Named Entity Recognition, Chinese-CNER)任务目标是从给定 ...
- SpringBoot深入理解
SpringBoot深入理解 项目打包SpringBoot启动过程 当使用打包时,会下载org-springframework-boot-loader的jar,并且不会放在lib存放的第三方jar包文 ...
- python RecursionError: maximum recursion depth exceeded while calling
import copyimport sys # 导入sys模块sys.setrecursionlimit(8192) # 将默认的递归深度修改为r = sys.getrecursionlimit()_ ...
- Python学习【第3篇】:列表魔法
##########################深灰魔法-list类中提供的方法###################list 类,列表list = [1,12,9,"age" ...