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;    }