这哪里错了啊??
#include<bits/stdc++.h>
using namespace std;
int x[201];
bool f[100000];
int main(){
int n,a,b,i,k,sum=0;
cin>>n>>a>>b;
for (i=1;i<=n;i++) cin>>x[i];
k=a;
f[k]=1;
while (k!=b){
if (k+x[k]<1||k+x[k]>n||f[k+x[k]]==1||sum==n){
cout<<"-1";
return 0;
}
else {
k+=x[k];
f[k]=1;
}
sum++;
}
cout<<sum;
}
就是用一个while
思路如果当前楼层=b了就输出sum
设一个数组f,如果到达过这一层了就置为一
为了后面判断如果当前楼层+k[i]>n或<1或者是当前楼层已经走过了,陷入了死循环那么就停止,输出-1