bool search(vector<vector<char> > &board, int x, int y, const string & word, int cur, vector<vector<bool > > &visited) { if ( word[cur] == board[x][y]) { if ( cur == word.length()-1) return true; visited[x][y] = true; for(int i=0; i < numDirs; ++i) { int n_x = x + delta_x[i]; int n_y = y + delta_y[i];//BUG TYPO x + delta_y if ( isValidRow(n_x, board) && isValidCol(n_y, board)) { if (!visited[n_x][n_y] && search(board, n_x, n_y, word, cur+1, visited) ) { //BUG: missing visited return true; } } } visited[x][y] = false; } return false; }
bool isValidSudoku(vector<vector<char>>& board) { for (int i = 0; i < 9; ++i) { if (!isValidRow(board, i)) return false; } for (int j = 0; j < 9; ++j) { if (!isValidCol(board, j)) return false; } for (int r = 0; r < 7; r += 3) { for (int c = 0; c < 7; c += 3) { if (!isValidSubBox(board, r, c)) return false; } } return true; }