hdu1426 Sudoku Killer
Sudoku Killer
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 59 Accepted Submission(s) : 28
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
据说,在2008北京奥运会上,会将数独列为一个单独的项目进行比赛,冠军将有可能获得的一份巨大的奖品———HDU免费七日游外加lcy亲笔签名以及同hdu acm team合影留念的机会。
所以全球人民前仆后继,为了奖品日夜训练茶饭不思。当然也包括初学者linle,不过他太笨了又没有多少耐性,只能做做最最基本的数独题,不过他还是想得到那些奖品,你能帮帮他吗?你只要把答案告诉他就可以,不用教他是怎么做的。
数独游戏的规则是这样的:在一个9x9的方格中,你需要把数字1-9填写到空格当中,并且使方格的每一行和每一列中都包含1-9这九个数字。同时还要保证,空格中用粗线划分成9个3x3的方格也同时包含1-9这九个数字。比如有这样一个题,大家可以仔细观察一下,在这里面每行、每列,以及每个3x3的方格都包含1-9这九个数字。
例题:
答案:
Input
Output
对于每组测试数据保证它有且只有一个解。
Sample Input
7 1 2 ? 6 ? 3 5 8
? 6 5 2 ? 7 1 ? 4
? ? 8 5 1 3 6 7 2
9 2 4 ? 5 6 ? 3 7
5 ? 6 ? ? ? 2 4 1
1 ? 3 7 2 ? 9 ? 5
? ? 1 9 7 5 4 8 6
6 ? 7 8 3 ? 5 1 9
8 5 9 ? 4 ? ? 2 3
Sample Output
7 1 2 4 6 9 3 5 8
3 6 5 2 8 7 1 9 4
4 9 8 5 1 3 6 7 2
9 2 4 1 5 6 8 3 7
5 7 6 3 9 8 2 4 1
1 8 3 7 2 4 9 6 5
2 3 1 9 7 5 4 8 6
6 4 7 8 3 2 5 1 9
8 5 9 6 4 1 7 2 3
Author
Source
#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char ch[];
int a[][];
int i,j,flag,l,p;
struct node
{
int x,y;
}s[];
int check1(int x,int y,int num)
{
for(int i=;i<;i++)
if(a[x][i]==num) return ;
return ;
}
int check2(int x,int y,int num)
{
for(int i=;i<;i++)
if(a[i][y]==num) return ;
return ;
}
int check3(int x,int y,int num)
{
int l,r,u,v;
r=(x/+)*-;
l=r-; //l=x/3*3;
v=(y/+)*-;
u=v-;
for(int i=l;i<=r;i++)
for(int j=u;j<=v;j++)
if (a[i][j]==num) return ;
return ;
} void dfs(int k)
{
if(flag) return;
if (k>l)
{
flag=;
return;
}
int x=s[k].x;
int y=s[k].y;
for(int i=;i<=;i++)
{
if (check1(x,y,i) && check2(x,y,i) && check3(x,y,i))
{
a[x][y]=i;
dfs(k+);
if (flag) return;
a[x][y]=;
}
}
return;
}
int main()
{
p=;
while(~scanf("%s",&ch))
{
l=-;
for(i=;i<;i++)
for(j=;j<;j++)
{
if (i== && j==)
{
if(ch[]>'' && ch[]<='') a[i][j]=ch[]-'';
else
{
a[i][j]=;
s[++l].x=i;
s[l].y=j;
}
continue;
}
scanf("%s",&ch);
if(ch[]>'' && ch[]<='') a[i][j]=ch[]-'';
else
{
a[i][j]=;
s[++l].x=i;
s[l].y=j;
}
}
flag=;
dfs(); if (p++) printf("\n");
for(i=;i<;i++)
{
for(j=;j<;j++)
printf("%d ",a[i][j]);
printf("%d\n",a[i][]);
} }
return ;
}
hdu1426 Sudoku Killer的更多相关文章
- HDU1426 Sudoku Killer(DFS暴力) 2016-07-24 14:56 65人阅读 评论(0) 收藏
Sudoku Killer Problem Description 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会 ...
- Sudoku Killer
Problem Description 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为一个单独的项目进行 ...
- hdu 1426:Sudoku Killer(DFS深搜,进阶题目,求数独的解)
Sudoku Killer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- HDU 1426 Sudoku Killer(dfs 解数独)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1426 Sudoku Killer Time Limit: 2000/1000 MS (Java/Oth ...
- hdu 1426 Sudoku Killer (dfs)
Sudoku Killer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- Steam 游戏 《Sudoku Universe(数独宇宙)》、《Sudoku Killer(数独杀手)》、《Sudoku Jigsaw(数独拼图)》数字位置解析 ---------C# 数独程序解析(2020年寒假小目标11)
日期:2020.02.11 博客期:151 星期二 今天,准备肝一个 C# 的数独读写工具(汇编语言也在努力学习命令方法中...),这三个游戏我早就买下了,一直放在 Steam 库里积灰,看着它的成就 ...
- P - Sudoku Killer HDU - 1426(dfs + map统计数据)
P - Sudoku Killer HDU - 1426 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为 ...
- hdu Sudoku Killer
简单的dfs,主要就是每个?处填的值是否满足条件的判断.这道题感觉考察的是输出格式的控制. #include"iostream" #include"stdio.h&quo ...
- hdu 1426 Sudoku Killer
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1426 #include<stdio.h> #include<math.h> #in ...
随机推荐
- Openjudge-计算概论(A)-短信计费
描述: 用手机发短信,一条短信资费为0.1元,但限定一条短信的内容在70个字以内(包括70个字).如果你一次所发送的短信超过了70个字,则会按照每70个字一条短信的限制把它分割成多条短信发送.假设已经 ...
- TFS 2012使用简介
为什么使用TFS 2012进行源代码管理——TFS 2012使用简介(一) 来源:雪雁 http://www.cnblogs.com/codelove/archive/2013/03/16/2963 ...
- log4j.properties文件的配置
Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使用这三个组件可以轻松 ...
- HyperSnap(屏幕抓图工具) 8.11.03 官方简体中文特别版
软件名称:屏幕抓图工具HyperSnap 软件分类:图像捕捉运行环境:WinXP/Win2003/Vista/Win7/Win8/WinALL软件语言:简体中文授权方式:免费软件软件大小:12462K ...
- Webdriver如何解决页面元素过期:org.openqa.selenium.StaleElementReferenceException: Element not found in the cache - perhaps the page has changed since it was looked up
当运行Webdriver时抛出如下异常:org.openqa.selenium.StaleElementReferenceException: Element not found in the cac ...
- java 邮件
使用java语言实现邮件的简单的发送和接受. 说明:使用Java应用程序发送E-mail比较简单,在使用下列程序之前,你需要将mail.jar和activation.jar 添加到你的CLASSP ...
- C# 处理图片 不规则图形裁剪
最近项目要求实现不规则裁剪功能.本来想用html5的canvas在前端实现的,但是发现有点困难,以下为C#端对图对片的处理. 为了让大家知道下面内容是否是自己想要的,我先发效果图. 原图 通过下面代码 ...
- MFC通过ODBC连接Mysql程序
分享到 一键分享 QQ空间 新浪微博 百度云收藏 人人网 腾讯微博 百度相册 开心网 腾讯朋友 百度贴吧 豆瓣网 搜狐微博 百度新首页 QQ好友 和讯微博 更多... 百度分享 MFC通过ODBC连接 ...
- HDU1073:Online Judge
Problem Description Ignatius is building an Online Judge, now he has worked out all the problems exc ...
- AC Me
AC Me Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submiss ...