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 ...
随机推荐
- The requested resource (/) is not available解决办法
The requested resource (/) is not available HTTP Status 404(The requested resource is not available) ...
- 吴裕雄 python神经网络 水果图片识别(1)
import osimport numpy as npimport matplotlib.pyplot as pltfrom skimage import color,data,transform,i ...
- linux 杂
set -e表示一旦脚本中有命令的返回值为非0,则脚本立即退出,后续命令不再执行; set -o pipefail表示在管道连接的命令序列中,只要有任何一个命令返回非0值,则整个管道返回非0值,即使最 ...
- 大型运输行业实战_day04_2_高级查询
1.高级查询最总效果 2.高级查询步骤 2.1页面输入框显示 开始车站:<input id="startStation" type="text" valu ...
- MySQL语句相关
一.增加 1.基本 2.集合 3.组合 二.删除 1.基本 2.集合 3.组合 1.一个表的查询结果作为另一个表的插入字段之一 <insert id="方法" paramet ...
- HSTS详解
1. 缘起:启用HTTPS也不够安全 有不少网站只通过HTTPS对外提供服务,但用户在访问某个网站的时候,在浏览器里却往往直接输入网站域名(例如www.example.com),而不是输入完整的URL ...
- IE8兼容background-size
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/web/images/bg.png',sizingMethod='sca ...
- luoguP3366 [模板] 最小生成树
题目链接:https://www.luogu.org/problemnew/show/P3366 思路: 求最小生成树的模板题,求MST有两种算法——Prim.Kruskal. 两者区别:Prim在稠 ...
- error CS1010 CS8025 CS1012 CS1525 常见文档错误解决
error CS1010: Newline in constant error CS8025: Parsing error error CS1012: Too many characters in c ...
- chest
chest - 必应词典 美[tʃest]英[tʃest] n.胸部:胸膛:有…胸的:胸部…的 网络胸围:箱子:胸腔 变形复数:chests: