Catch That Cow #include<iostream> #include<queue> #include<cstring> using namespace std; const int position=100001; int N,K; bool visit[position]; struct pos { int x;//坐标 int time;//时间,与步数意义同 }; void bfs() { queue<pos>Farmer; pos start,now,next; memset(visit,false,sizeof(visit));//初始化 start.x=N;//farmer的初始位置 start.time=0; Farmer.push(start); visit[start.x]=true;//标记已走过 while(!Farmer.empty()) { now=Farmer.front(); Farmer.pop();//首元素出列 if(now.x==K) {//当前位置是牛的位置 cout<<now.time<<endl; return; } for(int i=0;i<3;i++) {//前进方式 if(i==0) next.x=now.x+1; if(i==1) next.x=now.x-1; if(i==2) next.x=now.x*2; if(next.x>=0&&next.x<position&&!visit[next.x]) { next.time=now.time+1; Farmer.push(next); visit[next.x]=true; } } } } int main() { cin>>N>>K; bfs(); return 0; }