Word Search
回溯
vector<bool> visited; int m,n; bool exist(vector<vector<char> > &board, string word) { // Start typing your C/C++ solution below // DO NOT write int main() function if(word.empty()) return true; m = board.size(); n = board[0].size(); visited.clear(); visited.resize(m*n,false); for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { if(dfs(i,j,board,0,word)) return true; } } return false; } bool dfs(int i,int j,vector<vector<char> > &board, int pos,string& word) { if(pos==word.size()) return true; if(i<0||i>=m||j<0||j>=n||visited[i*n+j]) return false; if(board[i][j]!=word[pos]) return false; visited[i*n+j] = true; if(dfs(i-1,j,board,pos+1,word)||dfs(i+1,j,board,pos+1,word)||dfs(i,j-1,board,pos+1,word)||dfs(i,j+1,board,pos+1,word)) { return true; } else { visited[i*n+j] = false; return false; } }