您的位置:首页 > 其它

leetcode 37 sudoku solver

2018-01-28 20:05 471 查看
emmm暴力dfs。。。真的爆力

class Solution {

public:

    

    bool isValidSudoku(vector<vector<char>>& board, int x,int y) {

        int i, j;  

        for (i = 0; i < 9; i++)  

            if (i != x && board[i][y] == board[x][y])  

                return false;  

        for (j = 0; j < 9; j++)  

            if (j != y && board[x][j] == board[x][y])  

                return false;  

        for (i = 3 * (x / 3); i < 3 * (x / 3 + 1); i++)  

            for (j = 3 * (y / 3); j < 3 * (y / 3 + 1); j++)  

                if (i != x && j != y && board[i][j] == board[x][y])  

                    return false;  

        return true;

    }

    

    bool dfs(vector<vector<char>>& board) {

        for (int i = 0; i < 9; ++i) {

            for (int j = 0; j < 9; ++j) {

                if (board[i][j] == '.') {

                    for (int k = 1; k <= 9; ++k) {

                        board[i][j] = '0' + k;

                        if (isValidSudoku(board, i, j) && dfs(board))

                            return true;

                        else

                            board[i][j] = '.';

                    }

                    return false;

                }

            }

        }

        return true;

    }

    

    void solveSudoku(vector<vector<char>>& board) {

        dfs(board);

    }

    

    

    

    

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: