首页 > 编程知识 正文

腾讯面试测试题目,腾讯公益留住小白睿睿

时间:2023-05-05 19:17:11 阅读:60813 作者:3910

算法对程序员来说非常重要。 不仅发挥数学思维,还发挥逻辑能力。 进入BAT这样的大工厂时,请重视算法。 那是你的必由之路。

我觉得前几天看到的腾讯问题,还是很经典的。 请分享自己对于解决这个问题的想法。 正文不长,但只要认真去看,听从我的想法,就足以教会你解决问题的思考。 如果读完还做不到的话,请留言。 我一定会告诉你的。

一. 题目

有64匹马,共有8条路线。 要找到最快的四匹马,最少要打几次比赛? 看完主题后,想想自己怎么解,然后拿着你的答案往下看。

二. 题目分析

首先没有计时器。 不要把它当成奥运会的赛跑比赛。 一次比赛解决不了问题。

这64匹马的速度是恒定的,不会因为跑另一匹马累了就跑得比其他马慢。 否则,这个问题解决不了。

8路线是指每一回合可以跑8匹马,不会混乱。

如果“马”赛跑严重阻碍了你的思维,你可以想象,有64辆速度未知、速度参差不齐、速度恒定不变的玩具轿车,8条路线笔直,每次有8辆轿车比赛。

三. 解题思路

首先,你可以把64辆轿车分成8组,分别比赛。 各组中不能进入前四位的,表示64个中一定不能进入前四位。 也就是说,各组的后四位一定不是我们想要的答案。

其次,剩下了速度不同的32辆轿车。 如果我们继续使用上述方法,32组再次分割,分成4组,选出最快的4个,这4个最快吗? 当然,如果四班中,第一班的第二名跑得比第二班的第一名还快呢?

换句话说,把第一步中八班中的第一名全部比较一下,可以选出以下四名。 这下四名是各自小组下的第一名。 此时,淘汰对应的四组,可以留下16辆轿车。

接下来把剩下的16辆轿车列成表进行组合吧。

在上表中,默认情况下a、b、c和d排在刚才步骤3中各组的第一位。 看看现在轿车的速度关系吧。

列出ABCD aa1a2a3 bb1 B2B 3c C1 C2C 3d D1 d2d 3,以及如果我们想要最快的四台,可能会发生什么情况。

除各组第一、各组第二外进行比较,如果D1最大,则答案为ABCD。 在这种情况下,D1、D2和D3无论如何都不会进入前四名。

除了各组中的第一个,各组中的第二个进行比较,如果C1最大为C1D,则我们的答案是ABCC1,C2、C3不会进入前四名。

除各组第一部分外,各组第二部分比较,如果B1最大且B1D且B1C,我们的答案是ABCB1; 或者在B1C和B1D的情况下,此时的速度排列为ABB1,在B2中与剩下的c、d、A1相比取得第4位,可知B3的速度无论如何也不能进入前4。

除各组第1项外,各组第2项比较,A1最大,且A1B,前2名为a、A1。 此时,需要进行A2和b的比较,如果是A2B,则前三名为a、A1、A2,进而如果比较A3和b,则可知a、A1、A2、A3都有可能出现在前四名中

从上面的a、b、c、d四个步骤可以推测,D1、D2、D3、C2、C3、B3这六辆轿车的速度无论如何都进入不了前四名。

5 .根据上一步的结果,可以看到下图。 你只需要用棕色找你需要的答案。

此时,可以确认剩下的10辆车中有我们想要的答案。 然后,可以确认a是所有车中最快的车。 然后,你只需要在剩下的九辆车里找到最快的三台。

6 .我们可以任意在9辆车中取8辆进行比较,取出前3名,然后取剩下的前1个3名进行比较,就可以得出我们想要的最快的4辆车。 但如果是这样的话,我们需要比赛两个回合。 有没有更好的方法来减少比赛的回合? 接下来往下看。

7 .目前剩下的9辆轿车中,b、c、d、B1、B2、C1这6辆车中,b一定速度最大,而A1、A2

,A3中A1肯定是速度最大的。

8. 我们先假定B是前四名中的小汽车,只比较除了B的其余八辆车,而我们只需要去这八辆车里的前两名,如果这八辆车里最快的是 C或者B1,那么B肯定属于前四名中的一辆,则这一轮即可完成比较,我们想要的答案是AB和这一轮的前两名。

9. 如果八辆车里最快的是 A1,则我们要看这八辆车里第二快的是哪一辆,如果第二快的是C或者B1那此时也可以确定之前假定的B小车肯定是进了前四名的,只是不确定是不是 排在第二名的位置,则也可以在这一轮即可完成比较,我们想要的答案是ABA1还有C或者B1。

10.  如果八辆车里最快的是 A1,且第二快的是A2,则需要看排第三的是哪一辆车,如果是C或者B1而不是A3,那也可以说明B肯定是可以进前四名的,只是顺序问题不可保证。

11. 如果八辆车里的前三排序是 A1,A2,A3,那这种情况则将B和A3两辆车拿出来比赛一轮,谁快谁即是前四名中的一个。


四. 答案总结:

从上面十一步的思路分析中我们可以看到,除了第11步这种情况下我们只需要通过8+1+1=10轮就可以找出前四名小汽车,但是如果出现了第11种这种情况后,我们则需要多加一轮,也就是8+1+1+1=11轮次,挑出64辆小汽车最快的4辆小车。


如果看一遍觉得不能理解的话,请多看两遍,如果还有问题请留言。


如果对你有帮助不要忘了分享给你的朋友或者点击右下方的“在看”哦!也可以关注作者,查看历史文章并且关注最新动态,助你早日成为一名全栈工程师!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。