1. 程式人生 > >抓住那頭牛

抓住那頭牛

space string 時間限制 span 位置 code cst all queue

抓住那頭牛

鏈接: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(); }

抓住那頭牛