题解
2024-04-13 13:42:02
发布于:江苏
19阅读
0回复
0点赞
一定程度上借鉴了AC君的代码
#include<bits/stdc++.h>
using namespace std;
const int maxn=2e2+9;
int d[maxn],k[maxn];
int main(){
int n,a,b;
cin>>n>>a>>b;
queue<int> que;
for(int i=1;i<=n;i++){
cin>>k[i];
}
memset(d,-1,sizeof(d));
d[a]=0;
que.push(a);
while(que.size()){
int r=que.front();
que.pop();
if(r+k[r]<=n&&d[r+k[r]]==-1){
d[r+k[r]]=d[r]+1;
que.push(r+k[r]);
}
if(r-k[r]>=1&&d[r-k[r]]==-1){
d[r-k[r]]=d[r]+1;
que.push(r-k[r]);
}
}
cout<<d[b];
return 0;
}
全部评论 1
呃呃呃,我看不懂:(
2024-04-27 来自 浙江
0
有帮助,赞一个