1.题意:已知起点终点,且每个点有三个方向可以走,求最短路径
2.思路:简单bfs
3.代码:
#include<stdio.h>
#include<string.h>
int start,end;
struct node
{
int x;
int step;
}a[100005];
int visit[100005];
int bfs()
{
int kf=1,kv=0,i;
memset(visit,0,sizeof(visit));
while(kf>kv)
{
int tx;
a[0].x=start;
a[0].step=0;
node cur,b;
cur=a[kv++];
if(cur.x==end)
return cur.step;
for(i=0;i<=2;i++)
{
if(i==0)
tx=cur.x+1;
if(i==1)
tx=cur.x-1;
else
tx=cur.x*2;
if(tx>=start-1&&tx<end*2&&visit[tx]==0)
{
visit[tx]=1;
b.x=tx;
b.step=cur.step+1;
a[kf++]=b;
}
}
}
}
int main()
{
scanf("%d%d",&start,&end);
printf("%d\n",bfs());
return 0;
}