题目

总时间限制: 2000ms 内存限制: 65536kB
描述
农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式:
1、从X移动到X-1或X+1,每次移动花费一分钟
2、从X移动到2*X,每次移动花费一分钟

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

输入
两个整数,N和K
输出
一个整数,农夫抓到牛所要花费的最小分钟数
样例输入
5 17
样例输出
4

思路

BFS。记录下每到一个点走过的step,遍历所有点即可。

代码

while True:try:N, K = input().split()N = int(N); K = int(K)MAX_LEN = 100000queue = []visited = [0 for _ in range(MAX_LEN + 1)]queue.append([N, 0])visited[N] = 1while len(queue):tmp = queue[0]queue.pop(0)if tmp[0] == K:print(tmp[1])breakif tmp[0] - 1 >= 0 and not visited[tmp[0] - 1]:queue.append([tmp[0] - 1, tmp[1] + 1])visited[tmp[0] - 1] = 1if tmp[0] + 1 <= MAX_LEN and not visited[tmp[0] + 1]:queue.append([tmp[0] + 1, tmp[1] + 1])visited[tmp[0] + 1] = 1if 2 * tmp[0] <= MAX_LEN and not visited[2 * tmp[0]]:queue.append([2 * tmp[0], tmp[1] + 1])visited[2 * tmp[0]] = 1except:break

POJ 4001:抓住那头牛相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  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. 与 Scott Guthrie 一道感受技术激情 1月13日于北京
  2. 多目标决策问题1.1.1:线性加权法——熵权法确定权重
  3. python实现简单的api接口-对Python实现简单的API接口实例讲解
  4. Athentech Perfectly Clear中文版
  5. opencv中Mat矩阵的合并与拼接
  6. 网路知识:为什么宽带越用越慢,看完你就明白了
  7. 天气暖和了,我却感冒了
  8. MongoDB 通过 Java 代码 CRUD 数据库与集合
  9. VidMasta:搜索和观看在线电影、电视剧的神器
  10. 进程间通信IPC(一)pipe fifo mmap
  11. 银河麒麟服务器操作系统(Kylin) V10 arm64 飞腾/鲲鹏操作系统下载
  12. 大数据教程:数据可视化(ECharts)
  13. mysql如何存入汉字_[MYSQL]如何导入汉字单字到数据库
  14. 微信砍价 php,GitHub - YInJunWen/bcwx: vue2+thinkPHP5.1 前后端分离的微信砍价
  15. 关于不同操作系统下浏览器兼容问题
  16. S7-1200添加CALCULATE 指令
  17. python遍历指定文件夹下所有文件夹和文件
  18. getResource()的几种路径方式
  19. 中粮集团-“我买网”领导说了:
  20. Vue - webpack 打包兼容 360 浏览器和 IE 浏览器

热门文章

  1. vue简易计算器—码虫带你飞
  2. 健康指南:电脑白领无意中伤害腰椎的4大原因
  3. 《符号学原理与推演》读书笔记(一)
  4. Cyclic Permutations
  5. android 即时战略游戏,即时战略手游排行榜前十名 即时战略游戏推荐
  6. 最关心的是期货开户手续费和保证金
  7. 中国各省市区县一览表java处理
  8. 禁用Chrome自动更新及关闭弹窗
  9. 以U-NET为例的网络构建代码实现
  10. Golang:Excelize读写excel文件的Go语言库