描述

农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点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>
#define MAX 100000
using namespace std;
struct hp{int num,step;
}queue[100005];
int n,m,head,tail,now,step,ans;
bool b[100005];
int main(){scanf("%d%d",&n,&m);ans=MAX;head=0,tail=1;queue[tail].num=n,queue[tail].step=0,b[n]=true;while (head<tail){++head;now=queue[head].num,step=queue[head].step;if (now==m) {printf("%d",step);return 0;}if (now+1<=MAX&&!b[now+1]) b[now+1]=true,queue[++tail].num=now+1,queue[tail].step=step+1;if (now-1>=0&&!b[now-1]) b[now-1]=true,queue[++tail].num=now-1,queue[tail].step=step+1;if (now*2<=MAX&&!b[now*2]) b[now*2]=true,queue[++tail].num=now*2,queue[tail].step=step+1; }
}

【openjudge】抓住那头牛相关推荐

  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. 抓住那头牛(宽搜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. 萌新做点小玩意儿DAY-9 利用队列式分支限界解决抓住那头牛问题

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

最新文章

  1. applet打包的MANIFEST.MF配置
  2. Xamarin XAML语言教程基础语法篇大学霸
  3. python闭包的延迟绑定_浅析Python的闭包和延迟绑定
  4. insert 语句_替换某字段中的特定字符串——MySQL REPLACE 与INSERT 函数详解
  5. 超出了GC开销限制– Java堆分析
  6. kibana创建es索引_java操作es动态创建索引(按月生成),索引类型,索引别名
  7. onvif规范的实现:server端Discovery实现,通过OnvifTestTool12.06测试
  8. MATLAB中如何删除坐标上已画出的内容
  9. 虚拟dom_虚拟DOM与dom diff
  10. 报告PPT|Python网络程序设计教学要点与案例分享(含音频)
  11. leetcode python3 简单题69. Sqrt(x)
  12. shiro-cas------整合springboot客户端
  13. 解压 .solitairetheme8 文件
  14. LIBSVM使用方法及参数设置
  15. 薄板样条插值(Thin Plate Spline)
  16. 关于Palantir -第五部分:浏览器应用
  17. 华为服务器虚拟云主机,虚拟云主机和虚拟云服务器
  18. Android Text文字详解
  19. 前端兼容性问题解决方案
  20. SQL语句(六)_NUIST

热门文章

  1. 利用Python软件完成通讯录功能
  2. 【循环搜寻法(使用卫兵)】
  3. 计算机组成原理多级先行进位,计算机组成原理—最系统的算机基础知识.ppt
  4. 面试官:什么是责任链模式?
  5. Linux系统账号安全
  6. 扫描NFC卡,获取卡号存储到本地并可以以Excel形式导出数据
  7. Redis 3种集群方式,别傻傻分不清!
  8. 《Java安全编码标准》迷你书
  9. 京东商品3D展示怎么做?
  10. 【078】Town Scaper-创造属于自己的唯美水上小镇