算法之猜测生日

可以通过询问朋友5个问题,找到他出生在一个月的哪一天。每个问题都询问生日是否是5个数字集合中的一个。

集合一:                                  集合二:                                集合三:

1     3     5     7                        2     3     6     7                        4     5     6     7

9     11   13   15                      10   11   14   15                      12   13   14   15

17   19   21   23                      18   19   22   23                      20   21   22   23

25   27   29   31                      26   27   30   31                      28   29   30   31

集合四:                                   集合五:

8      9      10    11                    16    17    18    19

12    13    14    15                    20    21    22    23

24    25    26    27                    24    25    26    27

28    29    30    31                    28    29    30    31

生日是出现这一天的每个集合的第一个数字的和。


该题利用的是二进制算法,每个月最多31天,而每一天都可用一个小于或等于五位的二进制数表示,每个集合代表的则是二进制的位数,每个集合的第一个数代表的分别是二进制的1、10、100、1000、10000,故该算法可行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值