Catch That Cow (BFS求调)
  • 板块题目总版
  • 楼主Lzj_qwq
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/2 12:12
  • 上次更新2024/10/2 12:12:58
查看原帖
Catch That Cow (BFS求调)
1069781
Lzj_qwq楼主2024/10/2 12:12

题目地址

题目: Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,000) on the same number line. Farmer John has two modes of transportation: walking and teleporting.

  • Walking: FJ can move from any point X to the points X - 1 or X + 1 in a single minute
  • Teleporting: FJ can move from any point X to the point 2 × X in a single minute.

If the cow, unaware of its pursuit, does not move at all, how long does it take for Farmer John to retrieve it? Input Line 1: Two space-separated integers: N and K Output Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.

#include<cstdio>
#include<queue>
using namespace std;
struct point{
	int n,step;
};
queue<point> q;
int main(){
	int n,k; point u;
	scanf("%d%d",&n,&k);
	q.push((point){n,0});
	while(1){
		u=q.front(); q.pop();
		if(u.n==k) {printf("%d",u.step);break;}
		if(u.n+1<=k) q.push((point){u.n+1,u.step+1});
		if(u.n-1>0) q.push((point){u.n-1,u.step+1});
		if(u.n*2<=1e6) q.push((point){u.n*2,u.step+1});
	}
	return 0;
}
2024/10/2 12:12
加载中...