poj 2676 数独 ---dfs
来源:互联网 发布:eplan软件价格 编辑:程序博客网 时间:2024/06/11 17:51
每行 每列 每个小九宫格里 某个数字是否存在 记录下来
#include <iostream>#include <cstring>#include <string>#include <cstdio>#include <cmath>#include <algorithm>#include <vector>#include <queue>#include <map>using namespace std;int r[10][10],c[10][10],s[10][10],ma[10][10],zero;int dfs(int x,int y){ int i,flag,k; if(zero==0) return 1; if(x==10) return 0; if(ma[x][y]) { if(y==9) flag=dfs(x+1,1); else flag=dfs(x,y+1); if(flag) return 1; else return 0; } else { for(i=1;i<=9;i++) { k=3*((x-1)/3)+(y-1)/3+1; if(!r[x][i]&&!c[y][i]&&!s[k][i]) { r[x][i]=1; c[y][i]=1; s[k][i]=1; ma[x][y]=i; zero--; if(y==9) flag=dfs(x+1,1); else flag=dfs(x,y+1); if(flag) return 1; else { r[x][i]=0; c[y][i]=0; s[k][i]=0; ma[x][y]=0; zero++; } } } } return 0;}int main(){ int i,j,t,a; scanf("%d",&t); getchar(); while(t--) { memset(r,0,sizeof r); memset(c,0,sizeof c); memset(s,0,sizeof s); zero=0; for(i=1;i<=9;i++) { for(j=1;j<=9;j++) { a=getchar()-'0'; ma[i][j]=a; if(a==0) zero++; else { r[i][a]=1; c[j][a]=1; s[3*((i-1)/3)+(j-1)/3+1][a]=1; } } getchar(); } dfs(1,1); for(i=1;i<=9;i++) { for(j=1;j<=9;j++) printf("%d",ma[i][j]); putchar('\n'); } } return 0;}
0 0
- poj 2676 数独 ---dfs
- POJ 2676 && POJ 2918 数独 DFS
- poj 2676 dfs/DLX(数独)
- POJ 2676 Sudoku (数独 DFS)
- POJ 2676/2918 数独(dfs)
- POJ--2676&HDU--1421(数独,dfs)
- POJ 3074&&2676 数独DFS
- [DFS]poj 2676 Sudoku 数独问题
- (水)POJ-2676 DFS,数独
- POj 2676 数独 (dfs)
- POJ 2676-Sudoku(DFS-数独)
- 【POJ 2676】Sudoku数独(DFS)
- POJ 2676/2918——数独DFS
- POJ 2676 Sudoku (数独求解器 DFS)
- POJ 2676 数独
- poj 2918 Tudoku 数独dfs
- DFS 2676POJSudoku数独
- POJ 2676 Sudoku 数独
- 【COCOS2D-X学习】 Win7环境下VS2010配置Cocos2d-x-2.1.4最新版本
- Java中的StringBuilder类功能详解
- instanceof的理解
- C+双链表
- linux系统挂载光盘镜像ISO的方法
- poj 2676 数独 ---dfs
- javascript 解 一笔画游戏
- Java中单态设计模式
- 有关DBN的一点小心得
- SlidingMenu和ActionBarSherlock结合使用案例
- unity实现可编辑网格
- clang 与 libc++
- IMU模式下DML语句所产生的REDO RECORD格式解读
- hdu2337 Escape From Enemy Territory---二分bfs+预处理