[Leetcode] Sudoku Solver
来源:互联网 发布:java for循环语句 编辑:程序博客网 时间:2024/04/25 23:15
Write a program to solve a Sudoku puzzle by filling the empty cells.
Empty cells are indicated by the character '.'
.
You may assume that there will be only one unique solution.
A sudoku puzzle...
...and its solution numbers marked in red.
回溯!
我的代码有一个弊病,每次回溯都从 board[0][0] 开始搜,浪费时间。解决方案是设计一个position struct (包含x,y坐标),将所有的 empty position 放入一个 vector,再一个一个处理。(类似 DFS 的说)但是,我还是太懒了,唔~
class Solution {public: void solveSudoku(vector<vector<char> > &board) { solveThisSudoku(board); } bool solveThisSudoku(vector<vector<char> > &board) { // Start typing your C/C++ solution below // DO NOT write int main() function bool forward = false; for(int i=0;i<9;i++) { for(int j=0;j<9;j++) { if(board[i][j]=='.') { for(int val=1;val<=9;val++) { board[i][j] = '0' + val; if( checkSudoku(board,i,j) && solveThisSudoku(board)== true ) { return true; } board[i][j] = '.'; } return false; } } } return true; } bool checkSudoku(vector<vector<char> >& board, int x, int y) { bool flags[9] = {0};for(int i = 0; i < 9; ++i)if(board[x][i] >= '1' && board[x][i] <= '9'){if(!flags[board[x][i] - '1'])flags[board[x][i] - '1'] = true;elsereturn false;}memset(flags, 0, 9);for(int i = 0; i < 9; ++i)if(board[i][y] >= '1' && board[i][y] <= '9'){if(!flags[board[i][y] - '1'])flags[board[i][y] - '1'] = true;elsereturn false;}int xx = x/3*3;int yy = y/3*3;memset(flags, 0, 9);for(int i = 0; i < 3; ++i)for(int j = 0; j < 3; ++j)if(board[xx+i][yy+j] >= '1' && board[xx+i][yy+j] <= '9'){if(!flags[board[xx+i][yy+j]-'1'])flags[board[xx+i][yy+j]-'1'] = true;elsereturn false;}return true;}};
- 【LeetCode】Valid Sudoku && Sudoku Solver
- [Leetcode]Sudoku Solver&&Valid Sudoku
- leetcode Valid Sudoku & Sudoku Solver
- Leetcode 37 Sudoku Solver
- [Leetcode] Sudoku Solver
- Leetcode 37: Sudoku solver
- LeetCode Sudoku Solver
- [LeetCode]Sudoku Solver
- Leetcode Sudoku Solver
- LeetCode-Sudoku Solver
- LeetCode - Sudoku Solver
- LeetCode:Sudoku Solver
- 【leetcode】Sudoku Solver
- Leetcode: Sudoku Solver
- leetcode Sudoku Solver
- LeetCode | Sudoku Solver
- LeetCode Sudoku Solver
- [Leetcode] Sudoku Solver (Java)
- c# GDI+简单绘图(一)
- c# GDI+简单绘图(二)
- C# GDI+ 简单绘图 (三)
- c# GDI+简单绘图(四)
- windows 图标文件在哪里?
- [Leetcode] Sudoku Solver
- extjs4 ie6 ie7 ie8 显示异常解决
- extjs4 tabpanel坑总结
- 黑马程序员-- ADO.NET基础学习笔记
- 黑马程序员-- Dom基础知识学习笔记1
- 黑马程序员--Dom基础知识学习笔记2
- 黑马程序员--JS基础学习笔记
- ubuntu更新命令点点滴滴
- 黑马程序员--面向对象基础知识学习笔记