dfs搜索问题
class Solution {
public:
bool dfs(int pos, vector<int>& arr, vector<int>& visit){
if(arr[pos]==0){
return true;
}
// at pos, can go to where??
int nextpos=pos-arr[pos];
if (nextpos>=0&&nextpos<arr.size()&&visit[nextpos]==0){
visit[nextpos] = 1;
bool res = dfs(nextpos, arr, visit);
if(res){return true;}
visit[nextpos] = 0;
}
nextpos=pos+arr[pos];
if (nextpos>=0&&nextpos<arr.size()&&visit[nextpos]==0){
visit[nextpos] = 1;
bool res = dfs(nextpos, arr, visit);
if(res){return true;}
visit[nextpos] = 0;
}
return false;
}
bool canReach(vector<int>& arr, int start) {
vector<int> visit(arr.size(), 0);
visit[start] = 1;
return dfs(start, arr, visit);
}
};