【详解腾讯面试题】64匹马8个跑道最少需要多少轮才能选出最快的4匹马?

题目:64匹马8个跑道最少需要多少轮才能选出最快的4匹马?

题目分析题目本身是含义不清楚的,但是既然是程序员面试题,隐含条件是:

1、不能计时;

2、在最坏的情况下至少多少轮比赛,必然能选择出最快的4批马?

该题目的分析如下:(直接上图,号码是序号)

要点:

1、不能进入每组前4的,必然可以淘汰。-32匹(8轮)

2、每组第1名比赛后,不在前4的组必然可以淘汰。-16匹(1轮)(该种方法很高效排除无效参赛马匹)

3、伪TOP16后情况开始麻烦:由于此时无法必然选出真top8的马匹,因此+1轮比赛无法必然搞定。

4、伪TOP8比赛后(+1轮),结果分为3类(不是3种,每类可能有多种排列):伪top4分布在4、2、3组之中。

5、第1类,可以直接确定伪top4就是真top4;第2-3类,由于均存在未参赛马匹进入真TOP4的可能性(此处需要仔细思考),因此还需要(+1)轮比赛。

由于第1类仅仅是可能性之一,属于幸运情况(需10轮),不属于最坏的情况,因此最坏的情况下,至少经过11(=8+1+1+1)比赛。

 

为何该方法是效率最高的答案?

  • 如果答案是15(=8+4+2+1,有至少2种比赛方法得到15),该种方法是一种途径,但是效率略差。64匹马,由于前面必然需要全部跑完,因此8×8的比赛,是最快过一遍的方法,也是必然(存疑)。
  • 要点2是很key的一步,其效率很高,充分利用了前8轮比赛的结果上一步留给我的信息而答案是15的,则完全抛弃之前的比赛结果信息,因而效率差一些。
  • 从第10步开始,还剩伪top16的情况下,一般最多需要3步来获得答案。但是我们需要尝试压缩。争取1步,保底2步。但是由于信息不足,我们不论如何都无法确定真TOP8,因此就无法1步。
  • 我们能获取伪top8(这是上一步留给我们的信息),所以后面的问题变成了:分类讨论,选出真top8(甚至更小top集合)。
  • 获得了真TOP8(甚至top6、4)之后,仅需要1步/0步,即可获得最快top4,获得答案。

伪top16后的第二种解法?(已9轮)

除了上面的分类讨论外,还有第2种解法:

假如1号就是一直到第1名,即第1名已确定。那么问题立刻可以变为:如何寻找top2-4?

未直接比试过的2-4、10-11、18(6匹)是潜在的2-4名。已经比赛过的9、17、25(3匹)也是潜在的2-4名。

这就尴尬了,9匹,没法一条赛道定胜负。

排除最不可能进top2-4的25号:剩余8匹马比赛,若能确定top2-4(17不是3rd),则加上top1,结束(9+1)。如果不能确定top2-4,则还需加入25号再比一次(9+1+1)。

此题给我们的启示是什么?

  • top类问题,本质就是寻找最快排除效率的方法。
  • 充分利用上一次排除遗留的信息,给下一步的启示。
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
.NET面试题及答案详解主要涉及以下几个方面:基础知识、框架、语言特性、数据库操作、多线程等。 首先,针对基础知识的问题,可能会问到.NET是什么、.NET框架的组成部分、CLR是什么、以及C#和VB.NET的区别等。面试者可以回答.NET是一个面向对象的软件开发框架,包括CLR、FCL、ASP.NET等组成部分,CLR是公共语言运行库,C#和VB.NET都是.NET平台上的开发语言,其中C#更加常用。 其次,针对框架的问题,面试官可能会询问ASP.NET MVC和ASP.NET Web Forms的区别、Entity Framework的作用和优势、以及WCF和Web API的应用场景等。面试者应该了解ASP.NET MVC是一种基于模型-视图-控制器的开发模式,而Web Forms是一种传统的页面式开发模式;Entity Framework是.NET下的对象关系映射框架,简化了数据库操作;WCF用于构建分布式应用程序,而Web API主要用于构建RESTful服务。 此外,还可能会涉及到语言特性,例如面向对象的特性、委托和事件的使用、LINQ的特点等。面试者应该对这些概念有清晰的理解,并能够举出实际应用的例子。 另外,针对数据库操作和多线程方面的问题,面试官可能会考察ADO.NET的使用、并发编程、以及异步编程等。面试者需要熟悉ADO.NET的各种操作方式,以及多线程和异步编程的相关知识。 总之,针对.NET面试题及答案的详解需要面试者全面了解.NET相关的知识点,并能够结合实际应用进行深入阐述,展现出自己的专业能力和经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值