Original title Address
Backtracking, nothing to say.
1 BOOLrow[9][9];2 BOOLcol[9][9];3 BOOLgrid[9][9];4 BOOLmark[9][9];5 6 BOOLSolve (vector<vector<Char> > &board,intRintc) {7 if(r = =9)8 return true;9 if(Mark[r][c])Ten returnSolve (board, R + (c +1) /9, (c +1) %9); One for(inti =0; I <9; i++) { A if(!row[r][i] &&!col[c][i] &&!grid[(R/3) *3+ C/3][i]) { -Row[r][i] = Col[c][i] = grid[(R/3) *3+ C/3][i] =true; -BOARD[R][C] = i +'1'; the if(Solve (board, R + (c +1) /9, (c +1) %9)) - return true; -BOARD[R][C] ='.'; -Row[r][i] = Col[c][i] = grid[(R/3) *3+ C/3][i] =false; + } - } + A return false; at } - - voidSolvesudoku (vector<vector<Char> > &Board) { -memset (Row,9*9*sizeof(BOOL),false); -memset (Col,9*9*sizeof(BOOL),false); -memset (Grid,9*9*sizeof(BOOL),false); inmemset (Mark,9*9*sizeof(BOOL),false); - to for(intR =0; R <9; r++) + for(intc =0; C <9; C++) - if(Board[r][c]! ='.') { theROW[R][BOARD[R][C]-'1'] *= Col[c][board[r][c]-'1'] $= grid[(R/3) *3+ C/3][BOARD[R][C]-'1']Panax Notoginseng=Mark[r][c] -=true; the } + ASolve (board,0,0); the}
leetcode#37 Sudoku Solver