在一条线上找羊,农夫可以向前或向后一步,还可以步数乘二的跳跃。
#include<iostream>
#include<queue>
#include<memory.h>
#include<time.h>
using namespace std;
int Line[100001];
int N,K;
queue<int> Q;
int main()
{
clock_t start,end;
cin>>N>>K;
start=clock();
memset(Line,0, sizeof(Line));
Q.push(N);
int at;
while(!Q.empty())
{
at=Q.front();Q.pop();
if(at==K)
{
cout<<Line[at]<<endl;
break;
}
if((at-1)>=0&&Line[at-1]==0)
{
Q.push(at-1);
Line[at-1]=Line[at]+1;
}
if((at+1)<=100000&&Line[at+1]==0)
{
Q.push(at+1);
Line[at+1]=Line[at]+1;
}
if(2*at<=100000&&Line[at*2]==0)
{
Q.push(2*at);
Line[at*2]=Line[at]+1;
}
}
end=clock();
cout<<(end-start)<<endl;
return 0;
}