Catch That Cow

Description

Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,000) on the same number line. Farmer John has two modes of transportation: walking and teleporting.

* Walking: FJ can move from any point X to the points - 1 or + 1 in a single minute
* Teleporting: FJ can move from any point X to the point 2 × X in a single minute.

If the cow, unaware of its pursuit, does not move at all, how long does it take for Farm

#include<stdio.h>
#include<queue>
#include<iostream>
#include<cstring>
using namespace std;
queue<int> q;
int a,b;
bool visit[100010];
int step[100010];
bool bound(int x)
{
   if(x<0||x>100000)
        return 1;
        return 0;
}
int bfs(int m,int n)
{
    queue<int> q;
    int t,temp;
    q.push(m);
    visit[m]=1;
    while(!q.empty())
    {
        t=q.front();
        q.pop();
        for(int i=0;i<3;i++)
        {
        if(i==0)
            temp=t+1;
            if(i==1)
                temp=t-1;
            if(i==2)
                temp=t*2;
            if(bound(temp))//越界
                continue;
            if(visit[temp]==0)
            {
                step[temp]=step[t]+1;
                if(temp==n)
                return step[temp];
                visit[temp]=1;
                q.push(temp);

            }

        }
    }
}
int main()
{
    while(scanf("%d%d",&a,&b)!=EOF)
    {
        memset(visit,0,sizeof(visit));
        memset(step,0,sizeof(step));
       if(a>=b)
        printf("%d\n",a-b);
       else
        printf("%d\n",bfs(a,b));
    }

}

er John to retrieve it?

Input

Line 1: Two space-separated integers:  N and  K

Output

Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.

Sample Input

5 17

Sample Output

4

你可能感兴趣的:(Catch That Cow)