【POJ2676】sudoku 搜索
按照每一行每一列去填数,当填到每一行的第9列时,开始填下一行。
代码如下:
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <memory.h>
#define cls(a,b) memset(a,b,sizeof(a))
using namespace std;
char s[10][10];
int map[10][10],row[10][10],col[10][10],grid[10][10];
inline int get(int x,int y){
return (x-1)/3*3+(y-1)/3;
}
void init(){
cls(map,0);cls(row,0);cls(col,0);cls(grid,0);
}
bool dfs(int x,int y){
if(x==10)return 1;
else if(map[x][y])return y==9?dfs(x+1,1):dfs(x,y+1);
else{
for(int i=1;i<=9;i++){
if(row[x][i]||col[y][i]||grid[get(x,y)][i])continue;
row[x][i]=col[y][i]=grid[get(x,y)][i]=1,map[x][y]=i;
if(y==9?dfs(x+1,1):dfs(x,y+1))return 1;
row[x][i]=col[y][i]=grid[get(x,y)][i]=map[x][y]=0;
}
return 0;
}
}
int main(){
int kase;scanf("%d",&kase);
while(kase--){
init();
for(int i=1;i<=9;i++)scanf("%s",s[i]+1);
for(int i=1;i<=9;i++)
for(int j=1;j<=9;j++){
if(s[i][j]=='0')continue;
map[i][j]=s[i][j]-'0';
row[i][map[i][j]]=1;
col[j][map[i][j]]=1;
grid[get(i,j)][map[i][j]]=1;
}
dfs(1,1);
for(int i=1;i<=9;i++){
for(int j=1;j<=9;j++)printf("%d",map[i][j]);
puts("");
}
}
return 0;
}
【POJ2676】sudoku 搜索的更多相关文章
- poj2676 Sudoku(DFS)
做了很久还是参考了别人的答案orz,其实也不难啊.我要开始学一下怎么写搜索了... 题目链接:poj2676 Sudoku 题解:暴力搜索,DFS每个空白格子所放数字. #include<cst ...
- poj2676 Sudoku(搜索)
题目链接:http://poj.org/problem?id=2676 题意:9*9的方格,0代表没数字,其他代表数字,请在格子中填入1~9的数字,使得在每行,每列和每个3*3的方块中,1~9的数字每 ...
- POJ2676 – Sudoku(数独)—DFS
Sudoku Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 24081 Accepted: 11242 Specia ...
- poj2676 Sudoku
Sudoku Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17953 Accepted: 8688 Special ...
- 【DLX算法】poj2676 Sudoku
DLX算法求解精确覆盖问题模板.赛场上可以参见白书. #include<cstdio> #include<cstring> #include<vector> usi ...
- POJ2676 Sudoku(dfs)
题目链接. 题目大意: 就是数独游戏.横竖,每一个9宫方块,必须有1~9,且不重复. 分析: 直接DFS.一开始在原图上搜,会TLE.把要补全的空格,放入数组,这样就不用遍历整个图寻找要填的空格了. ...
- POJ2676 Sudoku [数独]
好题,也非常有用,犯了几个错误 1.在枚举赋值的时候,思维有个错误:当当前的赋值不能填完这个数独,应该是继续下一个循环,而不是return false 终止枚举 2.Generic Programin ...
- POJ2676 Sudoku 舞蹈链 DLX
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目(传送门) 题意概括 给出一个残缺的数独,求解.SPJ 题解 DLX + 矩阵构建 (两个传送门) 代码 #includ ...
- 备战NOIP每周写题记录(一)···不间断更新
※Recorded By ksq2013 //其实这段时间写的题远远大于这篇博文中的内容,只不过那些数以百记的基础题目实在没必要写在blog上; ※week one 2016.7.18 Monday ...
随机推荐
- com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class cn.edu.
详细信息 https://www.cnblogs.com/xuwenjin/p/8832522.html 解决办法: 在实体类上面加上注解 @JsonIgnoreProperties(value ...
- StatefulSet
StatefulSet: 1.稳点且唯一的网络标识符 2.稳点且持久的存储 3.有序.平滑的部署和扩展 4.有序.平滑的删除和终止 5.有序的滚动更新 三个组件组成:headless(无头服务) ...
- sql 用户相关命令
查看所有用户 select distinct concat(user, '@', host,';') as userList from mysql.user; select #查找 distinct ...
- caffemodel模型
resnet18 https://github.com/HolmesShuan/ResNet-18-Caffemodel-on-ImageNet
- cuda编程视频资料
胡文美教授 http://www.gpuworld.cn/article/show/463.html
- HTML5 ----- deviceorientation API
当我们把设备举到面前,就是坐公交车时玩手机的状态,手机的宽度(水平方向)就是X轴,从左向右依次变大:手机的高度(垂直方向)就是y轴,从下到上依次变大: 眼光盯着屏幕,我们的视线就是Z轴,离我们的眼睛越 ...
- 日期T转换
日期转换 在startup.csd ConfigureServices方法里 services.AddMvc().AddJsonOptions(o => { o.SerializerSettin ...
- Codeforces Round #467 Div. 1
B:显然即相当于能否找一条有长度为奇数的路径使得终点出度为0.如果没有环直接dp即可.有环的话可以考虑死了的spfa,由于每个点我们至多只需要让其入队两次,复杂度变成了优秀的O(kE).事实上就是拆点 ...
- Django ContentType组件
ContentType组件 引入 现在我们有这样一个需求~我们的商城里有很多的商品~~节日要来了~我们要搞活动~~ 那么我们就要设计优惠券~~优惠券都有什么类型呢~~满减的~折扣的~立减的~~ 我们对 ...
- IDEA 不识别的MAVEN 项目应如何处理
有些人啊,上传到git的项目,根本不是项目而是一个文件夹,文件夹里边还有个文件夹那才是项目,IDEA 不会识别出它是项目来 这个时候,需要选择这个文件夹下的pom.xml 文件 右键 pom.xml然 ...