按照每一行每一列去填数,当填到每一行的第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 搜索的更多相关文章

  1. poj2676 Sudoku(DFS)

    做了很久还是参考了别人的答案orz,其实也不难啊.我要开始学一下怎么写搜索了... 题目链接:poj2676 Sudoku 题解:暴力搜索,DFS每个空白格子所放数字. #include<cst ...

  2. poj2676 Sudoku(搜索)

    题目链接:http://poj.org/problem?id=2676 题意:9*9的方格,0代表没数字,其他代表数字,请在格子中填入1~9的数字,使得在每行,每列和每个3*3的方块中,1~9的数字每 ...

  3. POJ2676 – Sudoku(数独)—DFS

    Sudoku Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 24081   Accepted: 11242   Specia ...

  4. poj2676 Sudoku

    Sudoku Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 17953   Accepted: 8688   Special ...

  5. 【DLX算法】poj2676 Sudoku

    DLX算法求解精确覆盖问题模板.赛场上可以参见白书. #include<cstdio> #include<cstring> #include<vector> usi ...

  6. POJ2676 Sudoku(dfs)

    题目链接. 题目大意: 就是数独游戏.横竖,每一个9宫方块,必须有1~9,且不重复. 分析: 直接DFS.一开始在原图上搜,会TLE.把要补全的空格,放入数组,这样就不用遍历整个图寻找要填的空格了. ...

  7. POJ2676 Sudoku [数独]

    好题,也非常有用,犯了几个错误 1.在枚举赋值的时候,思维有个错误:当当前的赋值不能填完这个数独,应该是继续下一个循环,而不是return false 终止枚举 2.Generic Programin ...

  8. POJ2676 Sudoku 舞蹈链 DLX

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目(传送门) 题意概括 给出一个残缺的数独,求解.SPJ 题解 DLX + 矩阵构建  (两个传送门) 代码 #includ ...

  9. 备战NOIP每周写题记录(一)···不间断更新

    ※Recorded By ksq2013 //其实这段时间写的题远远大于这篇博文中的内容,只不过那些数以百记的基础题目实在没必要写在blog上; ※week one 2016.7.18 Monday ...

随机推荐

  1. com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class cn.edu.

    详细信息   https://www.cnblogs.com/xuwenjin/p/8832522.html 解决办法: 在实体类上面加上注解 @JsonIgnoreProperties(value ...

  2. StatefulSet

    StatefulSet: 1.稳点且唯一的网络标识符 2.稳点且持久的存储 3.有序.平滑的部署和扩展 4.有序.平滑的删除和终止 5.有序的滚动更新 三个组件组成:headless(无头服务)    ...

  3. sql 用户相关命令

    查看所有用户 select distinct concat(user, '@', host,';') as userList from mysql.user; select  #查找 distinct ...

  4. caffemodel模型

    resnet18 https://github.com/HolmesShuan/ResNet-18-Caffemodel-on-ImageNet

  5. cuda编程视频资料

    胡文美教授 http://www.gpuworld.cn/article/show/463.html

  6. HTML5 ----- deviceorientation API

    当我们把设备举到面前,就是坐公交车时玩手机的状态,手机的宽度(水平方向)就是X轴,从左向右依次变大:手机的高度(垂直方向)就是y轴,从下到上依次变大: 眼光盯着屏幕,我们的视线就是Z轴,离我们的眼睛越 ...

  7. 日期T转换

    日期转换 在startup.csd ConfigureServices方法里 services.AddMvc().AddJsonOptions(o => { o.SerializerSettin ...

  8. Codeforces Round #467 Div. 1

    B:显然即相当于能否找一条有长度为奇数的路径使得终点出度为0.如果没有环直接dp即可.有环的话可以考虑死了的spfa,由于每个点我们至多只需要让其入队两次,复杂度变成了优秀的O(kE).事实上就是拆点 ...

  9. Django ContentType组件

    ContentType组件 引入 现在我们有这样一个需求~我们的商城里有很多的商品~~节日要来了~我们要搞活动~~ 那么我们就要设计优惠券~~优惠券都有什么类型呢~~满减的~折扣的~立减的~~ 我们对 ...

  10. IDEA 不识别的MAVEN 项目应如何处理

    有些人啊,上传到git的项目,根本不是项目而是一个文件夹,文件夹里边还有个文件夹那才是项目,IDEA 不会识别出它是项目来 这个时候,需要选择这个文件夹下的pom.xml 文件 右键 pom.xml然 ...