题目

【问题描述】

农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式:

1、从X移动到X-1或X+1,每次移动花费一分钟

2、从X移动到2*X,每次移动花费一分钟

假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?

【输入形式】

两个整数,N和K

【输出形式】

一个整数,农夫抓到牛所要花费的最小分钟数

【样例输入】

5 17

【样例输出】

4

分析

因为只有两种移动方式,所以直接用广度搜索优先就可以。
注意在BFS中对于边界要判断一下,防止出界

AC的C++代码

#include<iostream>
#include<queue>
#define Maxn 10000
using namespace std;queue<int> q;
int time[Maxn + 1];
int n, k;void BFS(int beg) {fill(time, time + Maxn, Maxn); //初始化,值为Maxn代表已经走过 q.push(beg);time[beg] = 0;while (!q.empty()) {int t = q.front();            //队首元素 q.pop();if (t == k)break;if (t + 1 <= Maxn && time[t + 1] == Maxn) {time[t + 1] = time[t] + 1;q.push(t + 1);}if (t - 1 >= 0 && time[t - 1] == Maxn) {time[t - 1] = time[t] + 1;q.push(t - 1);}if (t * 2 <= Maxn && time[t * 2] == Maxn) {time[t * 2] = time[t] + 1;q.push(t * 2);}}
}int main() {cin >> n >> k;BFS(n);cout << time[k];
}

数据结构实验 3.抓住那头牛相关推荐

  1. 信息学奥赛一本通(1253:抓住那头牛)

    1253:抓住那头牛 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 14146     通过数: 5444 [题目描述] 农夫知道一头牛的位置,想要抓住它.农夫和 ...

  2. 广度优先搜索(BFS)——抓住那头牛(POJ 4001)

    本文将以(POJ 4001)抓住那头牛 为例,讲解经典算法广度优先搜索(BFS)的STL写法 在实际写算法中,怎么能不使用更快.更方便.更准确.更高效的C++ STL模板呢 相信很多人都了解过广度优先 ...

  3. 【信奥赛一本通】1253:抓住那头牛(详细代码)

    [广度优先搜索算法]1253:抓住那头牛 1.[题目描述] 2.[代码] 1.[题目描述] [题目描述] 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫起始位于点N(0≤N≤100000 ...

  4. Catch That Cow(抓住那头牛C++)

    Catch That Cow Farmer John has been informed of the location of a fugitive cow and wants to catch he ...

  5. C++广度优先搜索算法之抓住那头牛(Catch that cow)

    抓住那头牛: 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000).农夫有两种移动方式: ...

  6. 抓住那头牛(POJ NO.2971)

    抓住那头牛(POJ NO.2971) 总时间限制: 2000ms 内存限制: 65536kB Question 描述 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫起始位于点N(0< ...

  7. 萌新做点小玩意儿DAY-9 利用队列式分支限界解决抓住那头牛问题

    回溯法采用的是是深度优先搜索的策略,一般被用在找到一个问题的所有解.但是当问题只需要找到一个最优解的时候,可以使用分支限界的算法思想.分支限界算法思想就是以广度优先的策略对解空间树进行遍历,每个活结点 ...

  8. 抓住那头牛(宽搜bfs)

    Description 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫起始位于点N,牛位于点K. 农夫有两种移动方式: 1.从X移动到X−1或X+1,每次移动花费一分钟. 2.从X移动到 ...

  9. 抓住那头牛(BFS广搜)

    描述 农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫起始位于点N(0≤N≤100000),牛位于点K(0≤K≤100000).农夫有两种移动方式: 1.从X移动到X-1或X+1,每次移动 ...

最新文章

  1. 树莓派安装python3.5+tensorflow_树莓派4B安装Tensorflow的方法步骤
  2. R语言dplyr包使用recode函数进行数据列内容编码、转换实战:类似于pandas中的map函数(例如,将内容从字符串映射到数值)
  3. 黑客与网管的30天较量
  4. Java交换两个Integer-一道无聊的题的思考
  5. 【运营干货】段子手打死也不会告诉广告主的事:一篇新媒体文案如何才能引发用户分享?...
  6. WebRTC基本介绍
  7. 给你的ABAP对象打上标签(Tag)
  8. Ulink2 No Ulink Device found 解决办法
  9. 前端面试之那些稀奇古怪的问题
  10. Github 是如何用 Github 撰写 Github 文档的
  11. HTML实现学习网站首页
  12. wps linux 在线安装程序,WPS for Linux 字体安装包
  13. Halcon教程五:简单的条码识别案例
  14. DDOS学习+网络钓鱼+验证码攻击
  15. Hello Juejin
  16. word修订模式怎么彻底关闭_如何去掉word修订模式
  17. 软件工程师典藏 C# 程序开发范例宝典 第3版
  18. Android权限 权限等级 普通权限 敏感权限 申请权限
  19. python中os.listdir的用法
  20. 二、 剖析Netty的工作机制之Buffer、Channel、Selector分析

热门文章

  1. C#的百度地图开发(一)发起HTTP请求
  2. Query Designer中的特征限制(Characteristic Restrictions)、缺省值(Default Values)、自由特性(Free Characteristics)...
  3. 快速JQuery——(第一章)第一个JQuery
  4. LuoguP1402 酒店之王
  5. 微信获取地理位置转城市demo
  6. 一个逐页抓取网站小说的爬虫
  7. HTML5 viewport 标签与 CSS3 background-size 属性 使图片完全适应区域内容
  8. linux命令——scp 两台linux机器间文件或目录传输
  9. How do I select an ITEM from a combobox?
  10. 【重识 HTML + CSS】基本 CSS 属性