农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式: 1、从X移动到X-1或X+1,每次移动花费一分钟 2、从X移动到2*X,每次移动花费一分钟 假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛? 输入格式: 两个整数,N和K 输出格式: 一个整数,农夫抓到牛所要花费的最小分钟数
时间: 2024-04-01 09:35:45 浏览: 107
农夫养牛问题几种解法源码
5星 · 资源好评率100%
这是一道经典的BFS(广度优先搜索)问题。我们可以从起点N开始,每次向左走一步、向右走一步或者翻倍,用一个队列记录下一步能到达的位置以及到达该位置的时间,直到找到牛的位置K为止。
具体实现时,我们可以用一个布尔型数组visited来记录每个位置是否已经被访问过,避免重复访问。同时,我们可以在入队时判断下一步的位置是否越界或者已经被访问过,避免无效的搜索。
以下是代码实现:
阅读全文