Valid Sudoku(Do not pass)
来源:互联网 发布:姚明nba数据统计 编辑:程序博客网 时间:2024/05/23 13:06
//dfs, backtracing public boolean isValidSudoku(char[][] board) { // Start typing your Java solution below // DO NOT write main() function if(board.length == 0) return true; int m = board.length; int n = board[0].length; for(int i = 0; i < m; i++) { for(int j = 0; j < n; j++) { if(board[i][j] == '.') { for(int k = 0; k < 9; k++) { if(isValid(board, i, j, k) == true) { board[i][j] = (char)('1' + k); if(isValidSudoku(board) == true) return true; else board[i][j] = '.'; } } return false; } } } return true; } public boolean isValid(char[][] board, int row, int column, int k) { for(int i = 0; i < board.length; i++) { if(board[i][column] == (char)('1' + k)) return false; } for(int i = 0; i < board[0].length; i++) { if(board[row][i] == (char)('1' + k)) return false; } for(int i = 0; i < 3; i++) { row = row / 3 * 3 + i; for(int j = 0; j < 3; j++) { column = column / 3 * 3 + j; if(board[row][column] == (char)('1' + k)) return false; } } return true; }