最少多少步才能逮住兔子

1问题描述

有n个水平并排相邻的洞穴,从左到右依次编号1,2,...,n。某个洞穴中有一只兔子,该兔子每天晚上都会跳到相邻的洞穴中,有个农夫每天晚上会去一个洞穴逮兔子,请问该农夫至少要花多少天(或查看多少次洞穴)才能一定逮住该兔子?

2最优方案

农夫查看洞穴的编号依次为:2,3,...,n-3,n-2, n-2,n-3,...,3,2,一共查看了2(n-1)次,采用该方案一定能逮住兔子。

3方案解析

由于开始兔子的位置未知,原问题等价于:刚开始每个洞穴中有且仅有一只兔子,它们彼此互不干扰对方活动,洞穴足够大,可以容纳无穷只兔子,请问该农夫至少要花多少天(或查看多少次洞穴)才能逮住所有兔子?(若一个洞穴中有多只兔子,该农夫一次逮住该洞穴内的所有兔子)

刚开始,将奇数编号洞穴内的兔子染成红色,将偶数编号洞穴内的兔子染成绿色。如下,箭头表示农夫搜索位置。

下面不加证明地给出几个真命题:

  • 无论什么时候,所有红毛兔子所在洞穴编号奇偶性一致,所有绿毛兔子所在洞穴编号奇偶性一致,且与红毛兔子的奇偶性相反;

  • 无论什么时候,每个洞穴要么没有兔子,要么全是红毛兔子,要么全是绿毛兔子,不可能出现红毛兔子和绿毛兔子混在一个洞穴中的情况;

  • 不可能存在两只红毛兔子相邻,也不可能存在两只绿毛兔子相邻;

  • 每个红毛兔子想要越过其左边(或右边)的红毛兔子,必定会在某一洞穴内相遇;每个绿毛兔子想要越过其左边(或右边)的绿毛兔子,必定会在某一洞穴内相遇

当农夫从2号到n-1号洞穴扫描时,由于其行为是在兔子的行为(每次只能向相邻位置跑,在同一位置不能连续待两天)基础上,加上约束:只能向右跑,所以此时可以将农夫看成一只绿毛兔子,即农夫在向右扫描的过程中,要么遇到的洞穴为空,要么会逮住绿毛兔子;刚开始,所有绿毛兔子都在农夫右边,它们想要越过农夫,必定会在某个洞穴内相遇,即被逮住,所以当农夫扫描到第n-1个洞穴时,所有绿毛兔子都被逮住了。

当农夫从n-1号到2号洞穴扫描时,由于他在n-1处连续待了两天,其所在洞穴编号的奇偶性不再与绿毛兔子一致,反而与红毛兔子一致,因此此时可将农夫看成一只红毛兔子。所有红毛兔子都在农夫左边,同上分析,可得:当农夫扫描到2号洞穴时,所有红毛兔子都会被逮住。

综上所述:当农夫按照2,3,...,n-3,n-2, n-2,n-3,...,3,2的顺序搜索洞穴,一定会逮住所有兔子,由此可得,无论兔子初始在什么位置,农夫按照此路线一定能逮住这只兔子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

little_fat_sheep

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值