A133
2025-05-02 09:58:10
发布于:江苏
2阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int vis[1005]={},n,k,x,a[205]={},z;
queue<int>q;
int main(){
memset(vis,-1,sizeof(vis));
cin>>z>>n>>k;
for(int i=1;i<=z;i++){
cin>>a[i];
}
vis[n]=0;
q.push(n);
while(q.size()){
x=q.front();
q.pop();
if(x==k){
cout<<vis[x];
return 0;
}
if(vis[x-a[x]]==-1&&x-a[x]>=1){
vis[x-a[x]]=vis[x]+1;
q.push(x-a[x]);
}
if(vis[x+a[x]]==-1&&x+a[x]<=z){
vis[x+a[x]]=vis[x]+1;
q.push(x+a[x]);
}
}
cout<<-1;
return 0;
}
这里空空如也
有帮助,赞一个