トピックリンク
問題の意味
私たちが演じてきた数独ゲームが、この質問は、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
あなたはマークダウンブログ、錆びや硬い、555を初めて使用するとき〜
LeetCode37。数独ソルバー
おすすめ
転載: www.cnblogs.com/fan-jiaming/p/12121388.html
おすすめ
ランキング