BFS萌新也绝对能看懂的题解!!!快看!
2024-05-12 15:37:47
发布于:广东
32阅读
0回复
0点赞
看不懂你来找我,评论区留言教你😍
#include<bits/stdc++.h>
using namespace std;
int n,a,b,an[205];
int bz[205],dl[205][3],dx[3]={0,1,-1};//dx方向
void bfs()
{
dl[1][0]=a;//楼层
dl[1][1]=0;//按键次数
bz[a]=1;
int h=0,t=1;
while(h<t)
{
h++;
for(int i=1;i<=2;i++)
{
int xx=dl[h][0]+dx[i]*an[dl[h][0]];
if(xx>0&&xx<=n&&bz[xx]==0)
{
t++;
dl[t][0]=xx;
dl[t][1]=dl[h][1]+1;
bz[xx]=1;
if(xx==b)
{
cout<<dl[t][1];
h=t;
return;
}
}
}
}
cout<<"-1";
}
int main()
{
cin>>n>>a>>b;
for(int i=1;i<=n;i++)
{
cin>>an[i];
}
if(a==b)
{
cout<<"0";
return 0;
}
bfs();
}
这里空空如也
有帮助,赞一个