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 ...
随机推荐
- openpose c++ 配置教程 + python api
之前有介绍过基于tensorflow的openpose版本安装,但是我觉得没有caffe框架那么好用,很多功能也实现不了,比如调节net_resolution的调节,通过调节分辨率来提高检测的精确性和 ...
- 命令模式与go-redis command设计
目录 一.什么是命令(Command)模式 二.go-redis command相关代码 三.总结 一.什么是命令(Command)模式 命令模式是行为型设计模式的一种,其目的是将一个请求封装为一个对 ...
- HTTP协议相关知识整理:
http协议简介 超文本传输协议:是一种用于分布式.协作式和超媒体信息系统的应用层协议. 一次请求一次响应之后断开连接(无状态,短连接) 分析http请求信息格式 http工作原理 以下是 HTTP ...
- 理解js闭包9大使用场景
1.返回值(最常用) //1.返回值 最常用的 function fn(){ var name="hello"; return function(){ return name; } ...
- 超详细oracle 11g安装步骤 win版本
1. 打开网址: https://edelivery.oracle.com 使用oracle 任意账号登录 账号:2696671285@qq.com 密码:Oracle123 感谢来自某位好心大佬的共 ...
- 页面切换提速30%!京东商城APP首屏耗时监控及优化实践
https://mp.weixin.qq.com/s/vIG_x1MWC33HKV1GxalVHg 原创 平台研发朱跃棕等 京东零售技术 2020-12-09 网络接口请求可以从接口结构合理性及多接口 ...
- Trie 前缀树或字典树 确定有限状态自动机
https://zh.wikipedia.org/wiki/Trie 应用 trie树常用于搜索提示.如当输入一个网址,可以自动搜索出可能的选择.当没有完全匹配的搜索结果,可以返回前缀最相似的可能.[ ...
- 网络流 - dinic + 当前弧优化【代码】
这是初学网络流的时候从<算法竞赛进阶指南>抄下来的一份代码,自己理解的也不是很透彻. 注意,边要从 \(1\) 开始计,不然直接 \(xor\) 运算的话取反边会直接炸掉. #includ ...
- CF413C
正文 题意: 给 n 个关卡,每个关卡得分为 ai,有 m 次机会可以选择一 个关卡通过后不得分,而将现有得分翻倍 你可以安排关卡的通过顺序和策略,求最大得分. 分析: 看到这道题首先想到的就是贪心, ...
- 4. Linux工作目录切换和文本文件编辑命令
1.pwd:显示用户当前所处的工作目录 举例:[root@Centos ~]# pwd /root 2.cd:切换工作路径 "cd -"命令返回到上一次所处的目录 " ...