抓住那头牛

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抓住那头牛相关的知识,希望对你有一定的参考价值。

抓住那头牛

链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1253


时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式:

1、从X移动到X-1或X+1,每次移动花费一分钟

2、从X移动到2*X,每次移动花费一分钟

假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?

【输入】

两个整数,N和K。

【输出】

一个整数,农夫抓到牛所要花费的最小分钟数。

【输入样例】

5 17

【输出样例】

4
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
int zl[3]={1,-1},m[1000006];
int n,k;
void bfs()
{
    queue <int>Q;
    Q.push(n);
    while(!Q.empty())
    {
        int x=Q.front();
        Q.pop();
        for(int i=0;i<3;i++)
        {
            int x1;
            if(i==2)x1=2*x;
            else x1=x+zl[i];
            if(x1>=0&&x1<=100005&&!m[x1])
            {
                if(x1==k)
                {
                    cout<<m[x]<<endl;return ;
                }
                m[x1]=m[x]+1;
                Q.push(x1);
            }
        
        }
    }
    
}
int main()
{

    cin>>n>>k;
    m[n]=1;
    bfs();
}

 

以上是关于抓住那头牛的主要内容,如果未能解决你的问题,请参考以下文章

2971:抓住那头牛

poj3278--抓住那头牛

2971:抓住那头牛

抓住那头牛题解

2971 抓住那头牛 noi.openjudge

openjudge 2971:抓住那头牛 解题报告