题解 | #数独#

数独

http://www.nowcoder.com/practice/5e6c424b82224b85b64f28fd85761280

class Solution {
public:
    vector<vector<char> > ans;
    bool check(vector<vector<char> > &board,int row,int col,char val){
        int startrow = row / 3 * 3,startcol = col / 3 * 3;
        for(int i =  startrow;i <= startrow + 2;++i)
            for(int j = startcol;j <= startcol + 2;++j)
                if(board[i][j] == val)
                    return false;
        for(int i = 0;i < board.size();++i)
            if(board[i][col] == val)
                return false;
        for(int i = 0;i < board[0].size();++i)
            if(board[row][i] == val)
                return false;
        return true;
    }
    void back(vector<vector<char> > &board,int row,int col){
        if(board[row][col] == '.'){
            for(int i = 1;i <= 9;++i){
                if(check(board,row,col,i + '0')){
                    board[row][col] = i + '0';
                    if(col + 1 < board[row].size())
                        back(board,row,col + 1);
                    else if(row + 1 < board.size())
                        back(board,row + 1,0);
                    else
                        ans = board;
                    board[row][col] = '.';
                }
            }
        }
        else{
            if(col + 1 < board[row].size())
                back(board,row,col + 1);
            else if(row + 1 < board.size())
                back(board,row + 1,0);
            else
                ans = board;
        }
    }
    void solveSudoku(vector<vector<char> > &board) {
        back(board,0,0);
        board = ans;
    }
};
全部评论

相关推荐

机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 15:39
希望奇迹发生的布莱克...:真的是 现在卷实习就是没苦硬吃
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务