hdu 2780 Su-Su-Sudoku(DFS数独)
题目链接:hdu2780
#include<stdio.h>
#include<string.h>
#include<queue>
#include<math.h>
#include<algorithm>
#define N 15
using namespace std;
int map[N][N],v1[15],v2[15];
int flag,n,ok;
struct node
{
int x,y;
}s[6];
void judge1()//判断行和列
{
int i,j;
for(i = 0 ; i < 9 ; i ++)
{
memset(v1,0,sizeof(v1));
memset(v2,0,sizeof(v2));
for(j = 0 ; j < 9 ; j ++)
{
if(v1[map[i][j]])
{
ok = 0;
return;
}
else
v1[map[i][j]] = 1;
if(v2[map[j][i]])
{
ok = 0;
return;
}
else
v2[map[j][i]] = 1;
}
}
}
void judge2()//判断3*3矩形
{
int i,j,x,y;
for(i = 0 ; i <= 6 ; i += 3 )
{
for(j = 0 ; j <= 6 ; j += 3)
{
memset(v1,0,sizeof(v1));
for(x = 0 ; x < 3 ; x ++)
for(y = 0 ; y < 3 ; y ++)
{
if(v1[map[x + i][y + j]])
{
ok = 0;
return ;
}
else v1[map[x + i][y + j]] = 1;
}
}
}
}
void print()
{
ok = 1;
judge1();
if(!ok)
{
printf("Could not complete this grid.\n");
return ;
}
ok = 1;
judge2();
if(!ok)
printf("Could not complete this grid.\n");
else
{
for(int i = 0 ; i < 9 ; i ++)
{
for(int j = 0 ; j < 9 ; j ++)
printf("%d",map[i][j]);
printf("\n");
}
}
}
bool judge(int cur,int t)
{
int i,j;
for(i = 0 ; i < 9 ; i ++)
if(map[ s[cur].x ][i] == t || map[i][ s[cur].y ] == t)
return 0;
int x = s[cur].x/3 * 3;
int y = s[cur].y/3 * 3;
for(i = 0 ; i < 3 ; i ++)
for(j = 0 ; j < 3 ; j ++)
if(map[x + i][y + j] == t) return 0;
return 1;
}
void dfs(int cur)
{
if(cur == n)
{
flag = 1;
print();
return ;
}
if(flag) return ;
for(int i = 1 ; i <= 9 ; i ++)
if(judge(cur,i) && !flag)
{
map[s[cur].x][s[cur].y] = i;
dfs(cur + 1);
map[s[cur].x][s[cur].y] = 0;
}
}
int main()
{
int i,j,T;
char a[15];
scanf("%d",&T);
while(T--)
{
n = 0;
for(i = 0 ; i < 9 ; i ++)
{
scanf("%s",a);
for(j = 0 ; j < 9 ; j ++)
{
map[i][j] = a[j] - '0';
if(!map[i][j])
{
s[n].x = i;
s[n].y = j;
n ++;
}
}
}
flag = 0;
dfs(0);
if(!flag)
printf("Could not complete this grid.\n");
if(T) printf("\n");
}
return 0;
}
hdu 2780 Su-Su-Sudoku(DFS数独)的更多相关文章
- ACM : POJ 2676 SudoKu DFS - 数独
SudoKu Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu POJ 2676 Descr ...
- ACM: ICPC/CCPC Sudoku DFS - 数独
Sudoku Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/65535K (Java/Other) Total Submis ...
- 【POJ - 2676】Sudoku(数独 dfs+回溯)
-->Sudoku 直接中文 Descriptions: Sudoku对数独非常感兴趣,今天他在书上看到了几道数独题: 给定一个由3*3的方块分割而成的9*9的表格(如图),其中一些表格填有1- ...
- HDU 1241 Oil Deposits --- 入门DFS
HDU 1241 题目大意:给定一块油田,求其连通块的数目.上下左右斜对角相邻的@属于同一个连通块. 解题思路:对每一个@进行dfs遍历并标记访问状态,一次dfs可以访问一个连通块,最后统计数量. / ...
- hdu 1241 Oil Deposits(DFS求连通块)
HDU 1241 Oil Deposits L -DFS Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & ...
- LeetCode:36. Valid Sudoku,数独是否有效
LeetCode:36. Valid Sudoku,数独是否有效 : 题目: LeetCode:36. Valid Sudoku 描述: Determine if a Sudoku is valid, ...
- su;su -;sudo;sudo -i;sudo su;sudo su - 之间的区别
今天我们来聊聊su;su -;sudo;sudo -i;sudo su;sudo su -他们之间的区别. su :su 在不加任何参数,默认为切换到root用户,但没有转到root用户家目录下,也就 ...
- HDOJ(HDU).1258 Sum It Up (DFS)
HDOJ(HDU).1258 Sum It Up (DFS) [从零开始DFS(6)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双 ...
- HDOJ(HDU).1016 Prime Ring Problem (DFS)
HDOJ(HDU).1016 Prime Ring Problem (DFS) [从零开始DFS(3)] 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架 ...
- HDU 1426 Sudoku Killer【DFS 数独】
自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为一个单独的项目进行比赛,冠军将有可能获得的一份巨大的奖品— ...
随机推荐
- 集成学习算法总结----Boosting和Bagging(转)
1.集成学习概述 1.1 集成学习概述 集成学习在机器学习算法中具有较高的准去率,不足之处就是模型的训练过程可能比较复杂,效率不是很高.目前接触较多的集成学习主要有2种:基于Boosting的和基于B ...
- php 利用迭代器遍历文件夹
1.遍历文件夹 scandir 2.原生的迭代器Iterrate $scan_dir = "txtDir"; //下面会遍历txtDir 下面所有字文件夹中的文件哦 $dir_it ...
- Hive—简单窗口分析函数
hive 窗口分析函数 : jdbc:hive2:> select * from t_access; +----------------+---------------------------- ...
- 每月IT摘录201808--201809
一.技术 海量数据的解决方案: 使用缓存: 页面静态化技术: 数据库优化: 分离数据库中活跃的数据: 批量读取和延迟修改: 读写分离: 使用NoSQL和Hadoop等技术: 分布式部署数据库: 应用服 ...
- 91. Decode Ways (Array; DP)
A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...
- 【校招面试 之 C/C++】第11题 C++ 纯虚函数
1.纯虚函数 成员函数的形参后面写上=0,则成员函数为纯虚函数. 纯虚函数声明: virtual 函数类型 函数名 (参数表列) = 0: class Person { virtual void Di ...
- 将php数据下载csv文件
<?php $sales = array( array( 'Northeast', '2005-01-01', '2005-02-01', 12.54 ), array( 'Northwest' ...
- Sql优化-必劳记!
0. 尝试在合适的场景下,用 Charindex()函数代替 like,或者全文索引进行 内容搜寻.%like%不走索引,'like%'后百分号可以走索引. 1.调整不良SQL通常可以从以下几点切入: ...
- JTemplate学习(三)
另一种模板写法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xh ...
- 源代码安装grub-customizer
wget https://launchpad.net/grub-customizer/5.0/5.0.6/+download/grub-customizer_5.0.6.tar.gztar zxvf ...