腾讯校招智力题-赛马问题-毒药与老鼠

秋招-智力题

一、赛马问题

1.1 问题描述

64匹马,8个跑道,问最少比赛多少场,可以选出跑得最快的4匹马?Assumptions:每场比赛每个跑道只允许一匹马,且不存在并列情形

1.2 解题思路

答案:11场比赛一定能选出;10场在特殊情况可以。

Step1:

首先不可避免地要赛八场,每场8匹马;然后对每组第一再赛一场,按照每组的速度编号:

  • A1 > A2 > A3 > ------- >A8
  • B1 > B2 > B3 > ------- >B8
  • ~~
  • ~~
  • H1 > H2 > H3 > ------- >H8

且排序时按照A1 > B1 > C1 >~ > H1编号。

该步骤需要9场比赛。

Step2:

  1. 因为要选出前4名,所以,E1,F1,G1,H1所在的组淘汰;此时还剩16匹马。
A1B1C1D1
A2B2C2D2
A3B3C3D3
A4B4C4D4

不难观察到:B4 ,C3,C4,D2,D3,D4不可能入围,因为它们前面至少有4匹马的速度确定比它们快。此时还剩下10匹马。且A1 一定是No.1,所以还剩9匹马待定。

  1. 然后任选8匹马进行比赛(剩余 C2 / D1),取出前3名,再与最后剩下的一匹比赛,从而得出第2~3名。加上A1是No.1,得出结果;因此共需10次一定可以找到前4匹马。

补充

当C1排名>=3时,不再需要进行第10场比赛;这种情况共需9场。

二、毒药与老鼠

2.1 问题描述

有1000个一模一样的瓶子,其中999瓶中装的是普通的水,一瓶是毒药,水和毒药只能通过老鼠来分辨,喝下毒药的老鼠会在一个星期后死亡(刚好一个星期)。现在你有一个星期时间,请问至少需要多少只老鼠才能确定出哪个瓶子装的是毒药?

2.2 解题思路

  1. 因为只有一个星期的时间,所以不能让一只老鼠每隔一个星期喝一瓶毒药,直到老鼠死亡。
  2. 最暴力的一种方法:999只老鼠各自喝一瓶;一星期后如果所有老鼠都没死,那最后一瓶就是毒药,反之,死亡的老鼠所对应编号就是那瓶毒药。

上面是最直白的思路,下面介绍一种二进制思路

因为1000 < 2的10次方;所以1000瓶毒药可以从(0~999)按照10位二进制编号:

000000000009951111100011
100000000019961111100100
200000000109971111100101
300000000119981111100110
400000001009991111100111

选择10只老鼠,编号为1~10;让编号为 i 的老鼠喝下二进制中第i位下标为1的毒药。然后等待毒发。

结果分析:

第i只老鼠死亡,设该二进制位的值为1,否则为0;这样根据老鼠的死亡情况就可以得到一串唯一的二进制串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

高冷小伙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值