标签:return algo empty for pre end 移动 内存 font
链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1253
农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点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(); }
标签:return algo empty for pre end 移动 内存 font
原文地址:http://www.cnblogs.com/EdSheeran/p/7709811.html