HDU1426 Sudoku Killer(DFS暴力) 2016-07-24 14:56 65人阅读 评论(0) 收藏
Sudoku Killer
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
——————————————————————————————————————————————————————————
int xx = (x / 3) * 3;
int yy = (y / 3) * 3;
for (int i = xx; i<xx + 3; i++)
for (int j = yy; j<yy + 3; j++)
{
if (mp[i][j] == a)
return 0;
}
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<queue>
#include<vector> using namespace std; int mp[12][12];
int tot, cnt,flag,q;
struct node
{
int x, y;
}pl[100]; bool cheak(int x, int y, int a)
{
for (int i = 0; i<10; i++)
{
if (mp[i][y] == a)
return 0;
}
for (int i = 0; i<10; i++)
{
if (mp[x][i] == a)
return 0;
}
int xx = (x / 3) * 3;
int yy = (y / 3) * 3;
for (int i = xx; i<xx + 3; i++)
for (int j = yy; j<yy + 3; j++)
{
if (mp[i][j] == a)
return 0;
}
return 1;
} void print()
{
if (q++)
printf("\n");
for (int i = 0; i<9; i++)
{
for (int j = 0; j<8; j++)
{
printf("%d ", mp[i][j]);
}
printf("%d\n",mp[i][8]);
}
} void dfs(int cnt)
{
int xx, yy;
if (flag == 1)
return;
if (cnt == tot)
{
flag = 1;
print();
return;
}
for (int i = 1; i < 10; i++)
{
if (cheak(pl[cnt].x, pl[cnt].y, i))
{
mp[pl[cnt].x][pl[cnt].y] = i;
dfs(cnt+1);
mp[pl[cnt].x][pl[cnt].y] =0;
}
}
} int main()
{
char ch;
q = 0;
while (scanf("%s",&ch)!=EOF)
{
tot = 0;
if (ch == '?')
{
mp[0][0] = 0;
pl[tot].x = 0;
pl[tot++].y = 0; }
else
mp[0][0] = ch - '0';
for (int i = 0; i < 9; i++)
for (int j = 0; j < 9; j++)
{
if (i == 0 && j == 0)
continue;
scanf("%s",&ch);
if (ch == '?')
{
mp[i][j] = 0;
pl[tot].x = i;
pl[tot++].y = j;
}
else
mp[i][j] = ch - '0'; }
cnt = 0;
flag = 0;
dfs(0);
}
return 0;
}
HDU1426 Sudoku Killer(DFS暴力) 2016-07-24 14:56 65人阅读 评论(0) 收藏的更多相关文章
- HDU1078 FatMouse and Cheese(DFS+DP) 2016-07-24 14:05 70人阅读 评论(0) 收藏
FatMouse and Cheese Problem Description FatMouse has stored some cheese in a city. The city can be c ...
- A Knight's Journey 分类: dfs 2015-05-03 14:51 23人阅读 评论(0) 收藏
A Knight’s Journey Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 34085 Accepted: 11621 ...
- Hdu1016 Prime Ring Problem(DFS) 2016-05-06 14:27 329人阅读 评论(0) 收藏
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- HDU1501 Zipper(DFS) 2016-07-24 15:04 65人阅读 评论(0) 收藏
Zipper Problem Description Given three strings, you are to determine whether the third string can be ...
- HDU1258 Sum It Up(DFS) 2016-07-24 14:32 57人阅读 评论(0) 收藏
Sum It Up Problem Description Given a specified total t and a list of n integers, find all distinct ...
- leetcode N-Queens/N-Queens II, backtracking, hdu 2553 count N-Queens, dfs 分类: leetcode hdoj 2015-07-09 02:07 102人阅读 评论(0) 收藏
for the backtracking part, thanks to the video of stanford cs106b lecture 10 by Julie Zelenski for t ...
- Hdu1427 速算24点 2017-01-18 17:26 46人阅读 评论(0) 收藏
速算24点 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submiss ...
- A Knight's Journey 分类: POJ 搜索 2015-08-08 07:32 2人阅读 评论(0) 收藏
A Knight's Journey Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 35564 Accepted: 12119 ...
- Dirichlet's Theorem on Arithmetic Progressions 分类: POJ 2015-06-12 21:07 7人阅读 评论(0) 收藏
Dirichlet's Theorem on Arithmetic Progressions Time Limit: 1000MS Memory Limit: 65536K Total Submi ...
随机推荐
- eclispse修改项目项目编码
最近遇到问题,在myeclipse新建或导入项目后,有些文件中文显示乱码,每次都要在项目property中修改其编码,所以想到一次性解决所有编码问题,让项目新建或导入之后自动是utf-8编码,这样就不 ...
- ArcGIS案例学习笔记4_1
ArcGIS案例学习笔记4_1 联系方式:谢老师,135-4855-4328, xiexiaokui(#)qq.com 时间:第四天上午 案例1:矢量校正案例 教程:Editing编辑教程 pdf 数 ...
- exception keynote
[exception keynote] Note that the parentheses around this tuple are required, because except ValueEr ...
- django1.8模板位置的设置setting.py
大多数django教程比较老,给出的template的设置方案为: 更改工程下的setting.py文件, TEMPLATE_DIRS = ( os.path.join( APP_DIR, ' ...
- hibernate联合主键
@Entity @Table(name = "TABLE_NAME") @IdClass(PK.class) public class TableName implements S ...
- quartz2.2.1 web配置
首先到http://www.quartz-scheduler.org/downloads/catalog下载工具包 将下载包中lib目录下的所有jar包导入到项目中 因为quartz依赖log4j,需 ...
- 43. Multiply Strings (String)
Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...
- Silverlight实用窍门系列:57.Silverlight中的Binding使用(二)-数据验证
本文将简单讲述Silverlight中的Binding数据时的数据验证. NotifyOnValidationError:是否在出现异常/错误信息的时候激发BindingValidationError ...
- 获取url路径中的参数
简介 运用js的时候,我们有时可能会有这样的需求,就是想要获取浏览器地址栏指定的一项参数,形如:https://i.cnblogs.com/EditPosts.aspx?postid=8628413& ...
- 客户关系管理系统CRM
http://www.cnblogs.com/Michael2397/tag/SSH%E9%A1%B9%E7%9B%AE-CRM/ 客户关系管理系统