leetcode 37:解數獨
阿新 • • 發佈:2018-12-20
bool isValid(std::vector<std::vector<char>>& board,int row,int col,char c) { for(int i=0;i<9;i++){ if(board[row][i]==c)return false; if(board[i][col]==c)return false; } int r1=row/3; int l1=col/3; for(int j=0;j<3;j++){ for(int k=0;k<3;k++){ if(board[3*r1+j][3*l1+k]==c) return false; } } return true; } bool solve1(std::vector<std::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(solve1(board))return true; else board[i][j]='.'; } } return false; } } } return true; } void solveSudoku(std::vector<std::vector<char>>& board) { solve1(board); }