HDU 1426 Sudoku Killer(搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1426
题意很明确,让你解一个9*9的数独。
DFS即可。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <functional> using namespace std; #define REP(i,n) for(int i(0); i < (n); ++i)
#define rep(i,a,b) for(int i(a); i <= (b); ++i)
#define dec(i,a,b) for(int i(a); i >= (b); --i)
#define for_edge(i,x) for(int i = H[x]; i; i = X[i]) #define LL long long
#define ULL unsigned long long
#define MP make_pair
#define PB push_back
#define FI first
#define SE second
#define INF 1 << 30 const int N = + ;
const int M = + ;
const int Q = + ;
const int A = + ; struct node{
int x, y;
} d[Q]; char ch; bool a[A][A];
int f[A][A], r[A][A], c[A][A], v[A][A];
bool rr[A][A], cc[A][A], vv[A][A];
int num; inline void print(){
rep(i, , ){rep(j, , ) printf("%d ", f[i][j]); printf("%d", f[i][]); putchar();}
} void dfs(int now){
if (now > num){ print(); return ;}
int x = d[now].x, y = d[now].y; rep(i, , ){
if (vv[v[x][y]][i]) continue;
if (cc[c[x][y]][i]) continue;
if (rr[r[x][y]][i]) continue;
f[x][y] = i;
vv[v[x][y]][i] = true;
cc[c[x][y]][i] = true;
rr[r[x][y]][i] = true;
dfs(now + );
f[x][y] = ;
vv[v[x][y]][i] = false;
cc[c[x][y]][i] = false;
rr[r[x][y]][i] = false;
} } int main(){
#ifndef ONLINE_JUDGE
freopen("test.txt", "r", stdin);
freopen("test.out", "w", stdout);
#endif rep(i, , ) rep(j, , ) v[i][j] = ;
rep(i, , ) rep(j, , ) v[i][j] = ;
rep(i, , ) rep(j, , ) v[i][j] = ;
rep(i, , ) rep(j, , ) v[i][j] = ;
rep(i, , ) rep(j, , ) v[i][j] = ;
rep(i, , ) rep(j, , ) v[i][j] = ;
rep(i, , ) rep(j, , ) v[i][j] = ;
rep(i, , ) rep(j, , ) v[i][j] = ;
rep(i, , ) rep(j, , ) v[i][j] = ;
rep(i, , ) rep(j, , ) r[i][j] = i, c[i][j] = j;
int Case = ; //rep(i, 1, 9){rep(j, 1, 9) printf("%d ", c[i][j]); putchar(10); }
while (~scanf("%c ", &ch)){
if (Case) puts(""); else Case = ;
// memset(a, false, sizeof a);
memset(f, , sizeof f);
memset(cc, false, sizeof cc);
memset(vv, false, sizeof vv);
memset(rr, false, sizeof vv);
memset(d, , sizeof d);
num = ;
if (ch == '?'){
f[][] = ;
d[++num].x = , d[num].y = ;
}
else{
int np = (int)ch - ;
f[][] = np;
cc[c[][]][np] = true;
vv[v[][]][np] = true;
rr[r[][]][np] = true;
} rep(cnt, , ){
scanf("%c ", &ch);
int x = (cnt - ) / + , y = (cnt - ) % + ;
if (ch == '?'){
f[x][y] = ;
d[++num].x = x, d[num].y = y;
}
else{
int np = (int)ch - ;
f[x][y] = np;
cc[c[x][y]][np] = true;
vv[v[x][y]][np] = true;
rr[r[x][y]][np] = true; }
//rep(i, 1, 9){rep(j, 1, 9) printf("%d ", f[i][j]); putchar(10);}
}
dfs();
} return ; }
HDU 1426 Sudoku Killer(搜索)的更多相关文章
- 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 ...
- 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
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1426 #include<stdio.h> #include<math.h> #in ...
- hdu 1426 Sudoku Killer ( Dancing Link 精确覆盖 )
利用 Dancing Link 来解数独 详细的能够看 lrj 的训练指南 和 < Dancing Links 在搜索中的应用 >这篇论文 Dancing Link 来求解数独 , ...
- HDU 1426 Sudoku Killer【DFS 数独】
自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为一个单独的项目进行比赛,冠军将有可能获得的一份巨大的奖品— ...
- HDU 1426 Sudoku Killer (回溯 + 剪枝)
本文链接:http://i.cnblogs.com/EditPosts.aspx?postid=5398818 题意: 给你一个 9*9 的矩阵,同一行相邻的两个元素用一个空格分开.其中1-9代表该位 ...
- HUD 1426 Sudoku Killer (DFS)
链接 : Here! 思路 : 记录下所有 "?" , 出现的位置, 然后 $DFS$ 一下, 对于每个位置来说都可以填充 $9$ 种数值, 然后对于判断填充是否合法需要三个标记数 ...
- P - Sudoku Killer HDU - 1426(dfs + map统计数据)
P - Sudoku Killer HDU - 1426 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为 ...
随机推荐
- 更新域名解析以后,IP在cmd中ping不正确,清理DNS缓存
1清除ARP缓存,cmd下使用命令arp -d*代替执行. 2清除NETBT,cmd下使用命令nbtstat -R代替执行. 再清除DNS缓存,cmd下使用命令ipconfig /flushdns代替 ...
- Python全栈工程师(包、模块 的导入)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 为了梦想 为了信仰 Python人工智能从入门到精通 $ pip3 install tenso ...
- XML转译字符
&(逻辑与) & <(小于) < >(大于) > "(双引号) " '(单引号) ' [/size]
- maven中mapper.xml不发布的问题
在自定义的包中定义了mapper.xml然后利用mybatis的扫描包形式来动态创建mapper 开启工程报错: 说无效的绑定 原因: 发布的war中,工程包中的mapper根本就没有出现在class ...
- SQLEXPRESS 2012 安装NorthWind和Pub数据库
安装SQL后,学习时总是没有这两个示例数据库. 先从微软那里下载此文件. 网址:http://www.microsoft.com/en-us/download/details.aspx?id=2365 ...
- java 中基本类型与字符串之间的互相转换
1. 由 基本数据型态转换成 String String 类别中已经提供了将基本数据型态转换成 String 的 static 方法 也就是 String.valueOf() 这个参数多载的方法 有下 ...
- Thread suspend()挂起resume()恢复
import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.Actio ...
- 201621123033 《Java程序设计》第9周学习总结
第九次作业 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 //stream(),filter(),collect() ...
- 使用Bootstrap框架的HTML5页面模板
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- mssql 格式化字符串 /时间 年月日时分秒
比如:1 想格式化 000001,100 格式化为000100: 思路是这样的 1000000 +格式化的数字 取后6位: select right(cast(power(10,6) as var ...