sudoku-solver

2019-07-17  本文已影响0人  DaiMorph
class Solution {
public:
    void solveSudoku(vector<vector<char> > &board) {
        if(board.size()==0)return;
        solve(board);
    }
    bool solve(vector<vector<char>>&board)
    {
        for(int i=0;i<9;i++)
        {
            for(int j=0;j<9;j++)
            {
                if(board[i][j]=='.')
                {
                    for(char c='1';c<='9';c++)
                    {
                        if(isValid(board,i,j,c))
                        {
                            board[i][j]=c;
                            if(solve(board))return true;
                            board[i][j]='.';
                        }
                    }
                    return false;
                }
            }
        }
        return true;
    }
    bool isValid(vector<vector<char>>board,int row,int col,char c)
    {
        for(int i=0;i<9;i++)
        {
            if(board[row][i]==c||board[i][col]==c)return false;
        }
        int xbegin=(row/3)*3,ybegin=(col/3)*3;
        for(int i=xbegin;i<xbegin+3;i++)
        {
            for(int j=ybegin;j<ybegin+3;j++)
            {
                if(board[i][j]==c)return false;
            }
        }
        return true;
    }
};
上一篇 下一篇

猜你喜欢

热点阅读