题目链接
解题思路:
简单的BFS
AC代码
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
typedef long long ll;
int main()
{
ll a,b,f,r;
while(scanf("%lld %lld",&a,&b)!=EOF)
{
ll time[100010],vis[100010];
memset(time,0,sizeof(time));
memset(vis,0,sizeof(vis));
queue<ll> q;
q.push(a);
vis[a]=1;
while(!q.empty())
{
f=q.front();
q.pop();
for(int i=0;i<3;i++)
{
if(i==0) r=f+1;
if(i==1) r=f-1;
if(i==2) r=f*2;
if(r>=0&&r<=100000&&vis[r]==0)
{
vis[r]=1;
time[r]=time[f]+1;
q.push(r);
}
if(r==b) break;
}
if(r==b) break;
}
printf("%lld\n",time[r]);
}
return 0;
}