本文主要是介绍LeetCode Sudoku Solver,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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...
题意:数独游戏
思路:回溯解决,是不是好久没写了,开标记数组老是错
class Solution {public:bool check(vector<vector<char> > &board, int position) {int x = position / 9;int y = position % 9;for (int i = 0; i < 9; i++) if (i != x && board[i][y] == board[x][y]) return false; for (int j = 0; j < 9; j++) if (j != y && board[x][j] == board[x][y]) return false; for (int i = x / 3 * 3; i < (x / 3 + 1) * 3; i++) for (int j = y / 3 * 3; j < (y / 3 + 1) * 3; j++) if (i != x && j != y && board[i][j] == board[x][y]) return false; return true; }bool solve(vector<vector<char> > &board, int position) {if (position == 81)return true;int row = position / 9;int col = position % 9;if (board[row][col] == '.') {for (int i = 1; i <= 9; i++) {board[row][col] = i + '0';if (check(board, position) && solve(board, position+1))return true;board[row][col] = '.';}}else {if (solve(board, position + 1))return true;}return false;}void solveSudoku(vector<vector<char> > &board) {solve(board, 0);}
};
这篇关于LeetCode Sudoku Solver的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!