抓住那头牛
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(); }
以上是关于抓住那头牛的主要内容,如果未能解决你的问题,请参考以下文章