2 条题解
-
1433郭浩宇 (五中ghy) LV 7 @ 2019-04-04 17:47:20
wow
-
12019-01-30 13:55:48@
#include<iostream>
using namespace std;
int q[1000001][2];
int n,k;
bool a[100001];
int dx[]={-1,1};
void bfs(int n)
{
int x;
int head=0;
int tail=0;
q[++tail][0]=0;
q[tail][1]=n;
a[n]=1;
while(head<tail)
{
++head;
x=q[head][1];
if(a[x+1]!=1&&x+1<=100000)
{
q[++tail][1]=x+1;
a[x+1]=1;
q[tail][0]=q[head][0]+1;
if(q[tail][1]==k)
{
cout<<q[tail][0]<<endl;
return;
}
}
if((x-1)>=0&&a[x-1]!=1)
{
q[++tail][1]=x-1;
a[x-1]=1;
q[tail][0]=q[head][0]+1;
if(q[tail][1]==k)
{
cout<<q[tail][0]<<endl;
return;
}
}
if((x*2)<=100000&&(x*2)>=0&&a[x*2]!=1)
{
q[++tail][1]=x*2;
a[x*2]=1;
q[tail][0]=q[head][0]+1;
if(q[tail][1]==k)
{
cout<<q[tail][0]<<endl;
return;
}
}
}
}
int main()
{
while(std::cin>>n>>k)
{
if(n==k)
cout<<0;
else
bfs(n);
}
return 0;
}
//为什么只能算一组???
- 1