范围取半算法实例

问题:

 

使用最少的步骤询问出对方生日的月和日,要求:被询问生日方只可以回答,对或不对。

 

答案:

 

取半法,折半减小范围。达到快速,准确得到结果。

 

1.问:上半年生的吗? 答:不是                  

 

分析:上半年是1-6月,下半年是7-12月。可以确定他是下半年生的。范围也就是7-12月。

 

2.问:第三季的吗? 答:是

 

分析:第三季也就是7,8,9月,也就是说他生日月份就在这三个月

 

3.问:是8月15以前吗? 答:是

 

分析:好,可以确定是7月1到8月15之间的某天,反之也就是8月16到9月30号。

 

4.问:是7月23以前吗? 答:是

 

分析:继续折半。可以确定是7月1到1.23之间。

 

5. 6.7.8.....如上折半

 

9.最后能推到7月1号。

 

所以,最多9次就可以把一年所有天数问一遍。因为每次分两部分,而2的9次方是512,一年365天。所以9次完全足够一年每天都可以涵盖到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值