Sudoku Solver(Do not pass)
来源:互联网 发布:姚明nba数据统计 编辑:程序博客网 时间:2024/05/23 14:26
public void solveSudoku(char[][] board) { // Start typing your Java solution below // DO NOT write main() function dfs(board); } public boolean dfs(char[][] board) { int m = board.length; if( m == 0) return true; 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(i, j, k, board) == true) { board[i][j] = (char) ('1' + k); if(dfs(board) == true) return true; else board[i][j] = '.'; } } return false; } } } return true; } public boolean isValid(int row, int column, int k, char[][] board) { for(int i = 0; i < row; i++) { if(board[i][column] == (char) ('1' + k)) return false; } for(int i = 0; i < column; 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; }