整数数组跳跃
数组移动跳跃
http://www.nowcoder.com/questionTerminal/3f99492e23d9403d923e44bb1061cc86
1.难点整数数组的输入
2.跳到一个点,将其标为0,意思就是如果从这个点跳出去,经过一段距离后又回来了,说明陷入了循环,
或者本身就是0,直接停在原地
3.这样判断的时候就只需要判断(==0) 就返回false
#include <iostream>
#include <algorithm>
#include <string>
#include <sstream>
#include <vector>
using namespace std;
bool dfs(vector<int> &nums){
int n = nums.size();
int i = 0;
while(i>=0 && i<n){
if(nums[i]==0) return false;
int old = i;
i += nums[i];
nums[old] = 0;//
}
return true;
}
int main(){
string line;
while(getline(cin, line)){
line = line.substr(1, line.size()-2);
istringstream strin(line);
int x;
char sep;
vector<int> nums;
while(strin>>x){
nums.push_back(x);
if(strin>>sep) ;
else break;
}
bool ans = dfs(nums);
if(ans) cout<<"true"<<endl;
else cout<<"false"<<endl;
}
return 0;
}
