论坛首页 综合技术论坛

讨论一个算法,GOOGLE的一个面试题

浏览 59963 次
精华帖 (8) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-11-07   最后修改:2008-11-07
blurm 写道
1,先赛五场
2,第六场,每场的第一名赛一次,此次的第一名拿出去
3,第七场,第六场第一名在(1)里队伍的第二名顶上来再加上第六场的剩下四名比赛,此次的第一名再拿出去。
4,第七场的第一名在(1)里的下一个名次的马继续顶上来,和剩下的四匹马比赛

这样算下来得赛10场,不知道对不对

我表述的太烂了。。。sigh,自己寒一个

我觉这个差不多
借前面的形式
A1 A2 A3 A4 A5
B1 B2 B3 B4 B5
C1 C2 C3 C4 C5
D1 D2 D3 D4 D5
E1 E2 E3 E4 E5
快<===慢
第6场:拿A1 B1 C1 D1 E1 来比,可以得到最快的一匹,这个没问题了,在第6场假设是A1最快,E1最慢
第7场:用A2 B1 C1 D1 E1 来比(这里这5匹应该是剩下的最快的5匹了),如果A2最快,那么结果出来了,最快的5匹就是A1 A2 A3 A4 A5,如果C1最快,就拿剩下的A2 B1 C2 D1 E1再去比第8场(B1最快,就用A2 B2 C1 D1 E1比第8场)
思想就是每次都拿A[] B[] C[] D[] E[] 中最快一个来比

。。。感觉结果是最快7场,最慢10场。。。
0 请登录后投票
   发表时间:2008-11-07  
这个比较不好说,要是我去考试.我就会写6场
根据题目的描述来说,没有限制方法,从广义考虑,我们有方法可以在6场中分出胜负

分5组
1>每组第一名跑到目的地时,目测每匹马的身位差别,心记之
2>把5个第一拉来跑一场,同样目测每匹马的身位差别,心记之
3>以某匹马为标准值,心算每匹马的权值,列出前5
4>OK

0 请登录后投票
   发表时间:2008-11-07  
支持zhangkaitao,最撞大运的方法,在概率上6场是可能选出最快的5匹马
0 请登录后投票
   发表时间:2008-11-07  
最多21场吧
先随便挑五个赛,的、挑出最慢的来,跟另外四个比,如果在比那四个都慢就需要比把那四个放到原来的组去比,每次裁掉一个最慢的,这样理论上最慢的话要21场
最快就是第一次选出的五匹马就是前五名的话只需6次就行了
0 请登录后投票
   发表时间:2008-11-08   最后修改:2008-11-08
“至少”的话就相当简单了,五队分类赛排出名次,然后五队的第一再赛一次,排出队列的名次,这时第一队的第一一定是第一了。
把第二队的第一放到第一队,我们可以保证第二队的第一一定是后面几队中最快的。第二队的第一和第一队的其他马比,如果是第四或者第五,那么名次就一定出来了。。。

所以至少是七次!
0 请登录后投票
   发表时间:2008-11-11  
blurm 写道
stormspire 写道
我也并不知道标准答案,下面是我的思路:
第6轮完毕是
A组 A1,A2,A3,A4,A5
B组 B1,B2,B3,B4,--
C组 C1,C2,C3,--,--
D组 D1,D2,--,--,--
E组 E1,--,--,--,--
假设 A1>B1>C1>D1>E1

第二名没有什么悬念,肯定是A2,B1中的一个
第三名也没有悬念,是A2,A3,B1,B2,C1中的一个

所以拿A2,B1,A3,B2,C1 比一轮 (第7轮),那么可以得出第2、3名,并且可以淘汰第5名,以及第5名所在的其余成员
下面的就麻烦了。

1. 最简单情况,如果A2,A3是前两名,那么第4、5名就是A4,A5,B1,B2,C1里面,再比第8轮就可以
2. 如果A2,B1是前两名,再比第8轮也可以得出结果。我就不仔细分析了。
3. 最复杂的情况就是B1和C1是前两名,
   3.1 如果A3是最后一名,剩下
A组 A1,A2,--,--,--
B组 B1,B2,B3,--,--
C组 C1,C2,C3,--,--
D组 D1,D2,--,--,--
E组 E1,--,--,--,--

  这里就有A2,B2,B3,C2,C3,D1,D2,E1 8匹马来竞争最后的2个名额. A2,B2比过,所以
第4名可以在 A2,B2中的快者,然后加上C2,D1中比出来,假设我第8轮只用3匹马比,可以得出第4,而且可以淘汰第3名以及比第3名慢的马。所以第8轮可以至少淘汰2匹,加上选出来的第4,那么第9轮只剩下5匹马了,可以得出结果。

  3.2 如果B2是最后一名,剩下
A组 A1,A2,A3,--,--
B组 B1,--,--,--,--
C组 C1,C2,C3,--,--
D组 D1,D2,--,--,--
E组 E1,--,--,--,--

  可以发现这个图比上面的还简单,所以不会比3.1多

综上,觉得至少应该比9轮


关于第七轮的分析:
1. 最简单情况,如果A2,A3是前两名,那么第4、5名就是A4,A5,B1,B2,C1里面,再比第8轮就可以

如何能够确定B3,B4就在前五名开外呢?


因为现在是A1,A2,A3是前3名,然后还有两个名额,如果B3在前5名,然后B1>B2>B3,所以B1,B2也得在前5名,这样就不符合两个名额的推理了。
0 请登录后投票
   发表时间:2008-11-11  
nciky1984 写道
以下是我的思路- -

首先前6次比赛按照楼主的思路..

然后画出结果表格。如附件1的图1,表格里的数字代表这批马可能跑到的最好排名

根据前6场的比赛结果我们可以很容易得到以下3条结果:

从横向方向来看:右边那匹马的可能的最好成绩是左边一匹最好成绩+1,比如A2可能的最好成绩是第2,则A3的可能最好成绩是第3

从纵向方向上来看:在第1列上,下面那匹马的最好成绩是是上面那匹马的最好成绩+1,比如B1可能的最好成绩是第2,则C1可能的最好成绩是第3

表格中数字唯一:即代表这批马的排名...比如A1是第一。为了方便起见,标明为绿色

下面是第7轮的比赛算法..
选择没有确定排名的,数字最小的5匹马进行比赛,如附件1中图1的红色部分标明的5匹马..把排名填写在表中。因为第一名已经确认,所以从第2名开始排列

假设排名结果如附件1图2这样的结果(紫色部分)。

根据前面得到的3个条件,更新表格中马匹的最好成绩...见附件1图3。

很显然,最好成绩在第6名以后的可以直接淘汰..

然后重复以上循环即可得出跑得最快的5匹马...

最少需要8轮,即附件1所示那种情况。

以上算法可以扩展到有N匹马,M个赛道中...

但是题目问的是 至少 需要多少场比赛...也就是说运气最好的情况下可以确认前5的比赛场数...

所以答案得靠...凑

首先每匹马都得至少进行一场比赛,所以前5场比赛没有悬念...

关键在于第6场...将A5和B1,C1,D1,E1拉一起比...
如果运气够好,A5第一胜出...
排名就是A1,A2,A3,A4,A5。
最少需要 6场 比赛就能够确定名次..





表格中最后一个图没法在一轮就能决定最后的两名
0 请登录后投票
   发表时间:2008-11-11  
计时器是干毛用的?科学的发明不利用是落后还是返古?。。。
0 请登录后投票
   发表时间:2008-11-11  
applefeng_52 写道
计时器是干毛用的?科学的发明不利用是落后还是返古?。。。

你的话引出了一个更深入的问题
0 请登录后投票
   发表时间:2008-11-12  
stormspire 写道
nciky1984 写道
以下是我的思路- -

首先前6次比赛按照楼主的思路..

然后画出结果表格。如附件1的图1,表格里的数字代表这批马可能跑到的最好排名

根据前6场的比赛结果我们可以很容易得到以下3条结果:

从横向方向来看:右边那匹马的可能的最好成绩是左边一匹最好成绩+1,比如A2可能的最好成绩是第2,则A3的可能最好成绩是第3

从纵向方向上来看:在第1列上,下面那匹马的最好成绩是是上面那匹马的最好成绩+1,比如B1可能的最好成绩是第2,则C1可能的最好成绩是第3

表格中数字唯一:即代表这批马的排名...比如A1是第一。为了方便起见,标明为绿色

下面是第7轮的比赛算法..
选择没有确定排名的,数字最小的5匹马进行比赛,如附件1中图1的红色部分标明的5匹马..把排名填写在表中。因为第一名已经确认,所以从第2名开始排列

假设排名结果如附件1图2这样的结果(紫色部分)。

根据前面得到的3个条件,更新表格中马匹的最好成绩...见附件1图3。

很显然,最好成绩在第6名以后的可以直接淘汰..

然后重复以上循环即可得出跑得最快的5匹马...

最少需要8轮,即附件1所示那种情况。

以上算法可以扩展到有N匹马,M个赛道中...

但是题目问的是 至少 需要多少场比赛...也就是说运气最好的情况下可以确认前5的比赛场数...

所以答案得靠...凑

首先每匹马都得至少进行一场比赛,所以前5场比赛没有悬念...

关键在于第6场...将A5和B1,C1,D1,E1拉一起比...
如果运气够好,A5第一胜出...
排名就是A1,A2,A3,A4,A5。
最少需要 6场 比赛就能够确定名次..





表格中最后一个图没法在一轮就能决定最后的两名


楼主给出的题目有歧义

当时题目问的是至少,不是至多...

我对至少的理解是:算法在最好的情况下所能得出的场次
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics