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

抓住那头牛:

农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点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

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
广度优先搜索算法(BFS)是一种图论的经典算法,用于解决图的遍历问题。在广度优先搜索中,从给定的起始顶点开始,逐层地向外扩展,先访问距离起始顶点最近的顶点,再访问距离起始顶点稍远一点的顶点,以此类推,直到访问完所有可达的顶点。 在引用的代码中,作者使用C语言实现了广度优先搜索算法。代码中使用了一个二维向量`tree`来表示图,`flag`数组用于记录搜索到了节点i的第几个节点,`M`队列用于存储待访问的节点。算法通过不断从队列中取出节点,并将其相邻的节点加入队列中,直到队列为空为止。 具体的实现步骤如下: 1. 声明一个二维向量`tree`,用于表示图。在代码中,将图中的节点数设为9,通过循环生成树的结构。 2. 初始化数组`flag`,用于记录搜索到了节点i的第几个节点。 3. 声明一个队列`M`,用于存储待访问的节点。 4. 将起始节点加入队列`M`中。 5. 开始广度优先搜索算法: - 从队列`M`中取出第一个节点,并输出该节点。 - 遍历该节点的相邻节点,将其加入队列`M`中。 - 如果队列`M`不为空,继续执行上述步骤。 6. 输出结束。 以上是广度优先搜索算法的C语言实现示例。你可以参考这段代码来理解和使用广度优先搜索算法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [C++广度优先搜索一本通习题](https://download.csdn.net/download/m0_54615144/86269542)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [广度优先搜索算法(附C++实现)](https://blog.csdn.net/m0_37772174/article/details/81188732)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值