描述

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

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

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

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

输入

两个整数,N和K

输出

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

样例输入

5 17

样例输出

4

坑点在于判断越界和数组开大点


代码:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
using namespace std;
const int maxsize = 100000;
const int MaxN = 1000000;
struct Step{int x;int step;Step(int xx,int s):x(xx),step(s) {}
};
int visited[MaxN];
int N,K;
queue <Step> q;
void BFS(int x,int step){q.push(Step(x,step));visited[x] = 1;while(!q.empty()){Step temp = q.front();if(temp.x == K){printf("%d\n",temp.step);return ;}else{if(!visited[temp.x + 1] && temp.x + 1 <= maxsize){visited[temp.x + 1] = 1;q.push(Step(temp.x + 1,temp.step+1));}if(!visited[temp.x-1] && temp.x-1 >= 0){visited[temp.x - 1] = 1;q.push(Step(temp.x - 1,temp.step+1));}if(!visited[2 * temp.x] && 2 * temp.x <= maxsize){visited[2 * temp.x] = 1;q.push(Step(2 * temp.x,temp.step + 1));}q.pop();}   }
}
int main(){scanf("%d%d",&N,&K);memset(visited,0,sizeof(visited));BFS(N,0);return 0;
}

poj4001:抓住那头牛(BFS)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 算法提高课-搜索-最短路模型-AcWing 1100. 抓住那头牛:bfs

    题目分析 来源:acwing 分析:bfs求最短步数,需要dist[]数组来记录最短步数. ac代码 #include<bits/stdc++.h> using namespace std ...

最新文章

  1. Effective C# 摘录(1) - C# Language Elements
  2. REST 之 Spring 4 RESTful service
  3. MySQL 中的三中循环 while loop repeat 的基本用法
  4. Win10电脑定时关机无效怎么办
  5. laravel 图片上传 intervention/image
  6. javase二维数组笔记
  7. Hyper-V 3.0 - 关于存储迁移的一些说明
  8. 字符串的数组形式与指针形式
  9. KnockOutlook:针对Outlook的红队安全研究工具
  10. java房屋出租系统
  11. 【零基础学Python】Day8 Python基本数据类型之Dictionary
  12. thinkpad开机后无法进入系统怎么办?
  13. 六度分离_hdu_1869(floyd算法).java
  14. 桌面的快捷方式图标异常
  15. The King’s Ups and Downs HDU - 4489(计数+dp)
  16. java类加载器分类_Java类加载器特点的具体介绍
  17. Android制作粒子爆炸特效
  18. 删除指定位置的元素(数组)(PTA)
  19. H5浙里办对接流程和问题记录
  20. java8 集合的交集、并集、差集

热门文章

  1. mac启动选项找不到linux,Mac升级10.10后开机引导不见了,无法进入Linux
  2. 电脑常见问题及解决办法
  3. 在国企的日子(第三章下部 出差)
  4. 粉了一位P8大佬!!
  5. 无盘服务器配置网众,三种网众无盘常见服务器配置推荐
  6. linux有没有杀毒软件自动打补丁,在Linux下找杀毒软件简直是没事找事做
  7. VR设计人体工程学建议
  8. PKPM 多层及高层结构CAD软件的高级应用
  9. p2p终结者,汇报csdn广大码农。
  10. Linux -- Ubuntu 修改Home目录下的中文目录为英文