单词搜索
完完全全自己调试修改debug出来的一题。
上代码:
const int N = 40;int st[N][N];
class Solution {void dfs(bool & ans,int i,int j,string word,int u,vector<vector<char>>& board){if(board[i][j]!=word[u]) return;if(u==word.size()-1){ans=true;return;}if(i-1>=0&&!st[i-1][j])//上{st[i-1][j]=1;dfs(ans,i-1,j,word,u+1,board);st[i-1][j]=0;}if(i+1<board.size()&&!st[i+1][j])//下{st[i+1][j]=1;dfs(ans,i+1,j,word,u+1,board);st[i+1][j]=0;}if(j-1>=0&&!st[i][j-1])//左{st[i][j-1]=1;dfs(ans,i,j-1,word,u+1,board);st[i][j-1]=0;}if(j+1<board[0].size()&&!st[i][j+1])//右{st[i][j+1]=1;dfs(ans,i,j+1,word,u+1,board);st[i][j+1]=0;}}
public:bool exist(vector<vector<char>>& board, string word) {bool ans=false;for(int i=0;i<board.size();i++){for(int j=0;j<board[0].size();j++){if(word[0]==board[i][j]){memset(st,0,sizeof st);st[i][j]=1;dfs(ans,i,j,word,0,board);}}}return ans;}
};
看看题解:不想看了,觉得题解好复杂。。。