poj 2676 Sudoku ( dfs )
2013-08-27 15:30
295 查看
dfs 用的还是不行啊,做题还是得看别人的博客!!!
题目:http://poj.org/problem?id=2676
题意:把一个9行9列的网格,再细分为9个3*3的子网格,要求每行、每列、每个子网格内都只能使用一次1~9中的一个数字,即每行、每列、每个子网格内都不允许出现相同的数字。
0是待填位置,其他均为已填入的数字。
要求填完九宫格并输出(如果有多种结果,则只需输出其中一种)
如果给定的九宫格无法按要求填出来,则输出原来所输入的未填的九宫格
参考博客:http://www.cnblogs.com/tanhehe/archive/2013/08/07/3243073.html
/article/1968916.html
r、c、g数组用来剪枝
题目:http://poj.org/problem?id=2676
题意:把一个9行9列的网格,再细分为9个3*3的子网格,要求每行、每列、每个子网格内都只能使用一次1~9中的一个数字,即每行、每列、每个子网格内都不允许出现相同的数字。
0是待填位置,其他均为已填入的数字。
要求填完九宫格并输出(如果有多种结果,则只需输出其中一种)
如果给定的九宫格无法按要求填出来,则输出原来所输入的未填的九宫格
参考博客:http://www.cnblogs.com/tanhehe/archive/2013/08/07/3243073.html
/article/1968916.html
r、c、g数组用来剪枝
#include <iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<stack> #include<queue> #include<iomanip> #include<cmath> #include<map> #include<vector> #include<algorithm> using namespace std; struct node { int x,y; }q[100]; int r[10][10],c[10][10],g[4][4][10]; int G[10][10],cnt; int dfs(int cn) //表示dfs 递归还是不太会 { int x,y; if(cn<0) return 1; x=q[cn].x; y=q[cn].y; for(int k=1; k<=9; k++) { if(r[x][k] || c[y][k] || g[x/3][y/3][k]) continue; r[x][k]=c[y][k]=g[x/3][y/3][k]=1; G[x][y]=k; if(dfs(cn-1)) return 1; r[x][k]=c[y][k]=g[x/3][y/3][k]=0; } return 0; } int main() { int t,k; cin>>t; while(t--) { cnt=0; memset(r,0,sizeof(r)); memset(c,0,sizeof(c)); memset(g,0,sizeof(g)); for(int i=0; i<9; i++) { for(int j=0; j<9; j++) { scanf("%1d",&G[i][j]); //每次输入一个整数 k=G[i][j]; if(k!=0) r[i][k]=c[j][k]=g[i/3][j/3][k]=1; //g数组,每个子网格里是一样的 else q[cnt++]=(node){i,j}; //赋值到结构体里,学习了 } } dfs(cnt-1); for(int i=0; i<9; i++) { for(int j=0; j<9; j++) cout<<G[i][j]; printf("\n"); } } return 0; }
相关文章推荐
- POJ-2676-Sudoku-DFS
- POJ-2676 Sudoku (DFS)
- POJ-2676 Sudoku(DFS)
- Poj 2676 Sudoku[dfs]
- poj 2676 Sudoku (dfs)
- poj 2676 sudoku(DFS)
- POJ 2676 Sudoku (数独求解器 DFS)
- POJ_2676 Sudoku(DFS)
- POJ 2676 Sudoku (DFS回溯剪枝)
- POJ 2676 Sudoku(DFS)
- poj--2676 Sudoku(dfs)
- [DFS]poj 2676 Sudoku 数独问题
- poj 2676 sudoku dfs
- POJ 2676 Sudoku dfs
- POJ 2676-Sudoku(DFS)
- DFS POJ 2676 Sudoku
- POJ 2676 sudoku dfs
- POJ 2676 Sudoku 跳舞链 || dfs
- poj 2676 sudoku ( 数独)----DFS
- POJ-dfs-2676-Sudoku