丢失的牛(BFS)

一道来自洛谷的数学题目,FJ需要找回位于坐标y的牛,初始位置为x。FJ每次可以前进、后退或跳到2*x的位置。求最少步数。输入包含多组数据,每组数据包括FJ和牛的坐标。解决方案类似其他已做题目,采用BFS策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题面(from luogu)
丢失的牛
FJ丢失了他的一头牛,他决定追回他的牛。已知FJ和牛在一条直线上,初始位置分别为x和y,假定牛在原地不动。FJ的行走方式很特别:他每一次可以前进一步、后退一步或者直接走到2*x的位置。计算他至少需要几步追上他的牛。

输入格式:
第一行为一个整数t(≤10),表示数据组数;接下来每行包含一个两个正整数 x和y(0<x,y≤10^5),分别表示FJ和牛的坐标。
输出格式:
对于每组数据,输出最少步数。
样例 .in
1
5 17
样例.out
4

题目分析
又是一道雷同的题目(https://blog.youkuaiyun.com/c_uizrp_dzjopkl/article/details/82186601)
最近做了很多好像的题目,感觉越来越有手感了(我膨胀了 ?) )

题目的大体思路和上面链接的POJ的一题是一样的,但是在这一题上面,我们要注意一下,他是多组数据的输入,所以外面还要套一层循环

代码

#include <bits/stdc++.h>
using namespace std;

//用结构体来存储状态
struct node
{
	int now;     //当前到哪里了
	int cnt;     //目前走了多少步了
}q,p;     //q是工具性的结构体,p是当前的答案

int vis[400010],n,k,a[200000];    //vis判断去过哪些点,a是最终存所有答案的数组

int main()
{
	int t;
	
	queue<node>line;    //建队列(line是(名词)队的意思)
	
	cin>>t;        //输
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值