#include<bits/stdc++.h>
using namespace std;
struct seek{
int step,floor;
};
int main()
{
int mark[310],k[310];
memset(mark,0,sizeof(mark));
queue<seek>lift;
int n,beg,end;
cin>>n>>beg>>end;
for(int i=1;i<=n;i++)cin>>k[i];
seek st,fi;
st.floor=beg;st.step=0;
lift.push(st);
bool flag=false;
while(!lift.empty())
{
seek pace=lift.front();
lift.pop();
if(pace.floor==end)
{
flag=true;
cout<<pace.step;
return 0;
}
// 上升
if(pace.floor+k[pace.floor]<=n&&!mark[pace.floor+k[pace.floor]])
{
fi.floor=pace.floor+k[pace.floor];
fi.step=pace.step+1;
mark[fi.floor]=1;
lift.push(fi);
}
//下降
if(pace.floor-k[pace.floor]>0&&!mark[pace.floor-k[pace.floor]])
{
fi.floor=pace.floor-k[pace.floor];
fi.step=pace.step+1;
mark[fi.floor]=1;
lift.push(fi);
}
}
if(!flag)cout<<-1;
}
奇怪的电梯
最新推荐文章于 2024-04-23 15:48:12 发布