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北京奥运会上,会将数独列为一个单独的项目进行比赛,冠军将有可能获得的一份巨大的奖品— ...
随机推荐
- 吴裕雄 实战python编程(3)
import requests from bs4 import BeautifulSoup url = 'http://www.baidu.com'html = requests.get(url)sp ...
- 用R包来下载sra数据
1)介绍 我们用SRAdb library来对SRA数据进行处理. SRAdb 可以更方便更快的接入 metadata associated with submission, 包括study, sa ...
- SpringBoot yml properties文件
一.在SpringBoot实现属性注入: 1).添加pom依赖jar包: 1 <!-- 支持 @ConfigurationProperties 注解 --> 2 <!-- https ...
- wireshark使用相关问题
问题1: 打开wireshark,没有出现过滤器 解决1: 使用管理员方式登录 过滤: http and ip.src == 192.168.0.10 and ip.dst == 192.168.0. ...
- zoj1003-Max Sum (最大连续子序列之和)
http://acm.hdu.edu.cn/showproblem.php?pid=1003 Max Sum Time Limit: 2000/1000 MS (Java/Others) Mem ...
- 转)Ubuntu14安装wireshark进行抓包
转自:http://jingyan.baidu.com/article/c74d60009d992f0f6a595de6.html 背景: ubuntu14.04/64位 为了抓包和分析包 安装过程: ...
- Robotium原理初步--Android自动化测试学习历程
章节:自动化基础篇——Robotium原理初步(第四讲) 主要讲解内容与笔记: 一.基于控件 1.spinner——下拉菜单 2.TabHost——左右滑动选择菜单,类似电话本 3.Gallery—— ...
- ios 8 联系人ABPeoplePickerNavigationController
一. ios 联系人ABPeoplePickerNavigationControllerDelegate方法,新添加下面两个联系人选中方法,适配iOS8需要实现 // Called after a p ...
- MongoDB安装(一)
详细图解,记录 win7 64 安装mongo数据库的过程.安装的版本是 MongoDB-win32-x86_64-2008plus-ssl-3.4.1-signed. 示例版本:mongodb-wi ...
- VMware安装centos虚拟机 通过NAT与主机互通并能上网
1.关于centos虚拟机的安装,我这里就不详细说明了,网上有很多教程,默认你们已经安装好. (我的环境是centos6.6 x86 最小安装版) 2.右键虚拟主机,选择设置选项. 3.在 ...