抓住那头牛:

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

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

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

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

Catch that cow:

Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a pointN (0 ≤N ≤ 100,000) on a number line and the cow is at a pointK (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 pointX to the pointsX- 1 orX + 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?

以上是题目,具体输入输出如下:

输入

两个整数,N和K。

输出

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

样例输入5 17样例输出4

代码如下:

#include<cstdio>
const int sb=1e6;
bool mark[sb+1];
int que[sb+1],pre[sb+1],n,k;
int next;
void print(int x)
{int num=0;while(pre[x]){num++;x=pre[x];}printf("%d",num);
}
void bfs()
{if(n==k){printf("0");return ;}int head=0,tail=1;que[1]=n;mark[n]=true;while(head!=tail){head++;for(int i=0;i<3;i++){switch(i){case 0: next=que[head]+1;break;case 1: next=que[head]-1;break;case 2: next=que[head]*2;break;}if(next>=0&&next<=sb&&mark[next]!=true){tail++;que[tail]=next;mark[next]=true;pre[tail]=head;if(next==k) {print(tail);head=tail;break;}}}}
}
int main()
{scanf("%d%d",&n,&k);bfs();
}

C++广度优先搜索算法之抓住那头牛(Catch that cow)相关推荐

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

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

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

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

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

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

  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. 抓住那头牛(POJ NO.2971)

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

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

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

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

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

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

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

  9. 抓住那头牛(广搜)--算法学习

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

最新文章

  1. 微课竞赛系统的设计与实现所需工作条件_工作室文化建设展示(3)
  2. xml json 比较_JSON和XML:它们如何比较?
  3. mysql自定义两个条件排序_使用MySQL中的两个不同列进行自定义排序?
  4. SQL Server - 聚集索引 第六篇
  5. 简述 JPA 与 Spring Data JPA 与 Hibernate
  6. Jupyter Notebook中未显示Conda环境
  7. selenium webdriver中的常用鼠标操作
  8. 为Exchange Server创建多主机名证书
  9. 比CAM350好用的工具-DFM工具下载,PCB被板厂做坏了,谁的锅?
  10. 计算机硬盘容量越大运行速度越快,你是不是也感觉电脑内存越大运行速度越快?...
  11. Adobe系列軟件PC + MAC 2021
  12. 小功能⭐️U3D异步加载功能
  13. c语言less函数,LESS使用方法
  14. cv曲线面积的意义_耳机的瀑布图真的有意义吗?关于耳机的瀑布图,你需要知道的。...
  15. Android 伪造短信
  16. 第二章 STC51开发环境搭建
  17. Win10右键清空剪贴板
  18. Snipaste 提高十倍生产力工作效率,堪称最强神器
  19. 西林电桥测量法的基本原理中电容Cx计算公式详解
  20. Gopher meetup 深圳站 5.27

热门文章

  1. VB语音对接验证码短信接口DEMO示例
  2. 桌面IE图标不见了的4种解决方法
  3. 香侬读 | 让预训练模型学习知识:使用多学习器增强知识建模能力
  4. 【观察】加速自动驾驶落地,华为OceanStor Pacific有何“独门秘籍”?
  5. bal插口_中国银行银企对接接口格式(企业接口).doc
  6. 加热不燃烧电子烟方案Demo MG82F6D17
  7. MySQL本地安装与配置(超详细,附带安装包)
  8. 清北学堂培训2019.4.29
  9. 微信小程序:字体设计符号组合多功能微信小程序源码
  10. 复工复产,利用Python爬虫爬取火车票信息