POJ2676===sudoku===搜索
来源:互联网 发布:淘宝首页装修尺寸 编辑:程序博客网 时间:2024/05/22 11:42
#include<iostream>#include<cstdio>#include<vector>#include<algorithm>#include<cstring>using namespace std;short rowFlags[9][10]; //行标记 short colFlags[9][10]; //列标记 short blockFlags[9][10]; //块标记 每个小的九宫格作为一个小块 //上面三个数组的一维代表行列位置或标号位置 二维坐标代表1-9某个数字 int board[9][9];struct Pos{int r, c;Pos(int rr, int cc):r(rr), c(cc) {}}; vector<Pos> blankPos;inline int getBlockNum(int r, int c) {//根据坐标来确定是第几个九宫格 int rr = r/3;int cc = c/3;return rr*3 + cc;}void setAllFlags(int i, int j, int num, int f) {rowFlags[i][num] = colFlags[j][num] = blockFlags[getBlockNum(i, j)][num] = f;} bool isOk(int i, int j, int num) {return !rowFlags[i][num] && !colFlags[j][num] && !blockFlags[getBlockNum(i, j)][num];}bool dfs(int n) {//处理前n个空格if(n < 0) return true;int r = blankPos[n].r ;int c = blankPos[n].c ;for(int num = 1; num <= 9; ++ num) {if( isOk(r, c, num) ) {board[r][c] = num;setAllFlags(r, c, num, 1);if(dfs(n-1)) return true;setAllFlags(r, c, num, 0);}}return false;}int main() {int t;cin >> t;while(t--) {//初始化memset(rowFlags, 0, sizeof(rowFlags));memset(colFlags, 0, sizeof(colFlags));memset(blockFlags, 0, sizeof(blockFlags));blankPos.clear(); //输入for(int i = 0; i < 9; ++ i) {for(int j = 0; j < 9; ++ j) {scanf("%1d", &board[i][j]);if(board[i][j])setAllFlags(i, j, board[i][j], 1);else blankPos.push_back(Pos(i, j)); }} //搜索if(dfs(blankPos.size()-1)) {for(int i = 0; i < 9 ; ++ i) {for(int j = 0; j < 9; ++ j ) {cout << board[i][j];}cout << endl;}}}return 0;}
0 0
- POJ2676===sudoku===搜索
- POJ2676--Sudoku(搜索)
- POJ2676-搜索-Sudoku
- poj2676——Sudoku(深度搜索)
- poj2676(Sudoku)
- poj2676 - Sudoku
- POJ2676--Sudoku
- poj2676 Sudoku
- poj2676 Sudoku
- POJ2676 Sudoku
- POJ2676 Sudoku
- poj2676 Sudoku
- poj2676 Sudoku
- POJ2676-Sudoku
- poj2676--Sudoku(搜索练习5-数独游戏)
- poj2676 Sudoku 数独
- 北大ACM poj2676 Sudoku
- POJ2676:Sudoku(DFS)
- oracle rac环境搭建
- iOS 代理 XX.delegate = self;崩溃问题
- 控件点击第2下才能触发OnClick事件
- AID列表
- 生物采购平台 架构问题
- POJ2676===sudoku===搜索
- Zabbix 3.0 发布:加强了云端运行监视的安全性
- 番茄工作法——效率
- 阻塞socket和非阻塞socket(二)
- string和stringstream用法总结
- 原生方法上传图片
- CSS3用户界面
- 微信开发 web
- webview的一些设置