刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

4.抓牛
农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式:
1、从X移动到X-1或X+1,每次移动花费一分钟
2、从X移动到2*X,每次移动花费一分钟
假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?
时间限制:2000
内存限制:65536
输入
两个整数,N和K
输出
一个整数,农夫抓到牛所要花费的最小分钟数
样例输入
5 17
样例输出
4

使用微信搜索喵呜刷题,轻松应对考试!

答案:

解析:

【喵呜刷题小喵解析】这道编程题要求找到农夫抓住牛所需的最小时间。农夫有两种移动方式:移动到当前位置的相邻位置(左或右)或移动到当前位置的两倍。牛不会移动,农夫需要从位置N移动到位置K来抓住牛。首先,我们可以观察到,如果N大于或等于K,那么农夫只需要移动到K的位置就可以抓住牛,所需时间就是N和K之间的差值。如果N小于K,我们需要使用广度优先搜索(BFS)来找到最短路径。我们从位置N开始,尝试所有可能的移动方式,直到我们到达位置K或者尝试了所有可能的位置。在BFS中,我们使用一个队列来保存待探索的位置和当前的步数。我们还使用一个集合来保存已经访问过的位置,以避免重复探索。最后,我们调用函数catch_cow,输入N和K,并打印出结果。如果N大于或等于K,函数将返回N和K之间的差值;否则,它将返回通过BFS找到的最短路径的步数。
创作类型:
原创

本文链接:4.抓牛 农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share