LeetCode37. Sudoku Solver
Posted 旅人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode37. Sudoku Solver相关的知识,希望对你有一定的参考价值。
题目链接
题意
数独游戏大家都有玩过, 本题给出一个9*9数独棋盘, 你需要给出一个合法的终局棋盘
解题思路
对每一个位置dfs搜索可行解, 81层dfs不会爆栈, 安心dfs就好, 搜索方式见代码
AC代码
class Solution { public void solveSudoku(char[][] board) { solve(board, 0); } public boolean solve(char[][] board, int num) { if(num == 81) return true; int row = num / 9, col = num % 9; if(board[row][col] == '.') { for(char ch = '1'; ch <= '9'; ++ch) { if(isVaild(board, row, col, ch)) { board[row][col] = ch; if(solve(board, num + 1)) return true; else board[row][col] = '.'; } } return false; } return (solve(board, num + 1)); } public boolean isVaild(char[][] board, int r, int c, char ch) { for(int i = 0; i < 9; i++) { if(board[i][c] == ch) return false; if(board[r][i] == ch) return false; if(board[3 * (r / 3) + i / 3][3 * (c / 3) + i % 3] == ch) return false; } return true; } }
PS
第一次使用markdown写博客, 生疏且僵硬, 555~~
以上是关于LeetCode37. Sudoku Solver的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 37. Sudoku Solver —— 解数独
LeetCode 37 Sudoku Solver(求解数独)