C - Sudoku+dfs
来源:互联网 发布:管家婆普及版数据恢复 编辑:程序博客网 时间:2024/06/10 13:01
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
int f[10][10];
int position[100][3];
int ks;
int ok;
int main()
{
int dfs(int r,int c,int posi);
int i,j,t,kk,startx,starty;
scanf("%d",&t);getchar();
for (kk=1;kk<=t;kk++)
{
ks=0;
int start;
char tmp;
for (i=1;i<=9;i++)
{
for (j=1;j<=9;j++)
{
scanf("%c",&tmp);
f[i][j]=tmp+1-'1';
if (f[i][j]==0)
{
ks++;
position[ks][1]=i;
position[ks][2]=j;
}
}
getchar();
}
dfs(position[ks][1],position[ks][2],ks);
for (i=1;i<=9;i++)
{
for (j=1;j<=9;j++)
{
printf("%d",f[i][j]);
}
printf("\n");
}
ok=0;
}
return 0;
}
int dfs(int r,int c,int posi)
{
bool vis[10];
memset(vis,true,sizeof(vis));
int i,j,w;
int rr,cc;
for (i=1;i<=9;i++)
{
vis[f[i][c]]=false;
}
for (i=1;i<=9;i++)
{
vis[f[r][i]]=false;
}
for(i=(r-1)/3*3+1;i<=(r-1)/3*3+3;i++) //巧处一,用求商法得到9*9中3*3,
{
for(j=(c-1)/3*3+1;j<=(c-1)/3*3+3;j++)
{
if (i==r &&j==c) continue;
vis[f[i][j]]=false; //巧处二,用哈希法 //对BFS,DFS中判断是否legal的地方以后改为先用hash保存结果再直接判断如果只是一句话判断的函数,就可以用
}
}
for (w=1;w<=9;w++)
{
if ( vis[w] )
{
f[r][c]=w;
if (posi==1){ ok=1; return 0; }
dfs(position[posi-1][1],position[posi-1][2],posi-1);
if (ok==1) {return 0;}
f[r][c]=0;
}
}
return 0;
}
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
int f[10][10];
int position[100][3];
int ks;
int ok;
int main()
{
int dfs(int r,int c,int posi);
int i,j,t,kk,startx,starty;
scanf("%d",&t);getchar();
for (kk=1;kk<=t;kk++)
{
ks=0;
int start;
char tmp;
for (i=1;i<=9;i++)
{
for (j=1;j<=9;j++)
{
scanf("%c",&tmp);
f[i][j]=tmp+1-'1';
if (f[i][j]==0)
{
ks++;
position[ks][1]=i;
position[ks][2]=j;
}
}
getchar();
}
dfs(position[ks][1],position[ks][2],ks);
for (i=1;i<=9;i++)
{
for (j=1;j<=9;j++)
{
printf("%d",f[i][j]);
}
printf("\n");
}
ok=0;
}
return 0;
}
int dfs(int r,int c,int posi)
{
bool vis[10];
memset(vis,true,sizeof(vis));
int i,j,w;
int rr,cc;
for (i=1;i<=9;i++)
{
vis[f[i][c]]=false;
}
for (i=1;i<=9;i++)
{
vis[f[r][i]]=false;
}
for(i=(r-1)/3*3+1;i<=(r-1)/3*3+3;i++) //巧处一,用求商法得到9*9中3*3,
{
for(j=(c-1)/3*3+1;j<=(c-1)/3*3+3;j++)
{
if (i==r &&j==c) continue;
vis[f[i][j]]=false; //巧处二,用哈希法 //对BFS,DFS中判断是否legal的地方以后改为先用hash保存结果再直接判断如果只是一句话判断的函数,就可以用
}
}
for (w=1;w<=9;w++)
{
if ( vis[w] )
{
f[r][c]=w;
if (posi==1){ ok=1; return 0; }
dfs(position[posi-1][1],position[posi-1][2],posi-1);
if (ok==1) {return 0;}
f[r][c]=0;
}
}
return 0;
}
0 0
- C - Sudoku+dfs
- Sudoku(DFS)
- Sudoku--DFS
- Sudoku(DFS)
- PKU 2676 (Sudoku) DFS
- POJ 2676 Sudoku dfs
- 【DFS】ZOJ 1580 Sudoku
- POJ2676:Sudoku(DFS)
- ZOJ 2580 Sudoku (DFS)
- hdu1426 Sudoku Killer dfs
- poj 2676 sudoku(DFS)
- Leetcode dfs Sudoku Solver
- POJ2676:Sudoku(DFS)
- POJ 2676 sudoku dfs
- POJ 2676 SuDoKu DFS
- POJ2676 Sudoku DFS
- POJ-2627-Sudoku-DFS
- POJ-2676-Sudoku-DFS
- B - Red and Black+dfs
- Java中内部类与非公有类的区别
- python下Matplotlib for Python 2.7及其依赖(含安装包及说明)64、32位都有
- CoreGraphics.h和QuartzCore
- 规则 3.1:对象命名汇总表(2)
- C - Sudoku+dfs
- 多级代理下Nginx获取真实用户IP地址的总结
- D - Lake Counting-dfs
- SharedPreferences 保存字符串数组
- 规则 3.1:对象命名汇总表(3)
- Find problem in eXtremeDB
- E - Children of the Candy Corn`特别DFS+BFS+DFS陷阱
- F - Catch That Cow-BFS-只计次不求路径
- G - Dungeon MasterBFS+填路