代码随想录 Leetcode37. 解数独

题目:

代码随想录 Leetcode37. 解数独_第1张图片


代码(首刷看解析 2024年2月6日):

class Solution {
private:
    bool backtracking(vector>& board) {
        for (int i = 0; i < 9; ++i) {
            for (int j = 0; j < 9; ++j) {
                if (board[i][j] == '.') {
                    for (char k = '1'; k <= '9'; ++k) {
                        if (isValid(board, i, j, k)) {
                            board[i][j] = k;
                            if (backtracking(board)) return true;
                            board[i][j] = '.';
                        }
                    }
                    return false;
                }
            }
        }
        return true;
    }
    bool isValid(vector>& board, int row, int col, char val) {
        for (int i = 0; i < 9; ++i) {
            if (board[i][col] == val || board[row][i] == val) {
                return false;
            }
        }

        int startRow = (row / 3) * 3;
        int startCol = (col / 3) * 3;
        for (int i = startRow; i < startRow + 3; ++i) {
            for (int j = startCol; j < startCol + 3; ++j) {
                if (board[i][j] == val) {
                    return false;
                }
            }
        }
        return true;
    } 
public:
    void solveSudoku(vector>& board) {
        backtracking(board);
    }
};

你可能感兴趣的:(#,leetcode,---,hard,算法)