锁定老帖子 主题:面试RUBY AND RAILS的一次经历
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-09-19
有个前提,跑的快的马永远跑得快(现实中不太可能),算的是理论情况下如何快速找到前三个最快的。
zhang26chao 写道 D组第一输A,B,C组第一但不一定输A组第二和第三啊.
D组第一既然输给ABC组第一,那一定不是前三,所以直接delete. A组第二有可能是第二,B组第一也有可能是第二,其它的都不可能是第二了。A2 - B1跑一次,快的是第二了。 慢的可能是第三,另外A3、B2、C1也可能是第三,所以这三个跑一次,快的就是第三了。 这样是 6 + 1 + 1 + 1 =9次了。 能不能再少一次呢?可以,A2、A3、B1、B2、C1一起跑一次,把2、3名一次找出来就齐了。 8次! |
|
返回顶楼 | |
发表时间:2008-09-19
呵呵,尝试算了一下,结果如下:
1、将36匹马分6小组,分别进行比赛,得出的比赛名次如下: 第一组:A1、 A2、A3、 A4、 A5、 A6 第二组:B1、 B2、B3、 B4、 B5、 B6 第三组:C1、 C2、C3、 C4、 C5、 C6 第四组:D1、 D2、D3、 D4、 D5、 D6 第五组:E1、 E2、E3、 E4、 E5、 E6 第六组:F1、 F2、F3、 F4、 F5、 F6 2、A1、 B1、 C1、 D1、 E1、 F1进行比赛,假设得出的排名为:A1、 B1、 C1、 D1、 E、1 F1,此时可以断定A1为最快的马,horse1 = A1; 3、拿B1与(A2、A3、 A4、 A5、 A6)进行比赛,如果B1最快,那么horse2 = B1,并跳转到步骤4;如果A2最快,那么horse2 = A2 horse3 = B1, 此时共用的比赛次数为:8; 4、将C1与(A2、A3、 A4、 A5、 A6)进行比赛,如果C1或者A2最快,那么,再将C1或者A2与(B2、B3、 B4、 B5、 B6)进行比赛, 可以确定 horse3 = C1或者 horse3 =B2,此时,共用的比赛次数为:9次; 所以最后,比赛的次数为:8次或者9次。不知道对不对! |
|
返回顶楼 | |
发表时间:2008-09-19
结果就8次
1、分6组比出各组的1、2、3名 2、6组中的第一名进行夺冠 3、冠军所在组的2、3名,亚军组和季军组的1、2名同时出战决出季军亚军 |
|
返回顶楼 | |
发表时间:2008-09-19
36只马,6只1组赛跑 (小组赛) 6轮
每组取第一名,然后将各组第一名取出,共6名赛跑(冠军组) 1轮 将冠军组的前2,3名(除去冠军) 和各自所在(小组赛时)的第 2名, 冠军所在小组赛时的2,3名 共6名,取出 赛跑 1轮 取前2名 + 冠军 |
|
返回顶楼 | |
发表时间:2008-09-19
其实用排除法就可以把过程看的很清楚了,前面的步骤一样,6组分别比之后6个第一名比,这时候,假设排名为:A1、 B1、 C1、 D1、 E1、F1,此时可以断定A1为最快的马,然后排除法,看那些不可能是前三:
1、D,E,F组全部排除; 2、A组后三名全部排除(前面至少已经有A1,A2,A3); 3、B组后四名全部排除(前面至少已经有A1,B1,B2); 4、C组其实后五名都可以排除(前面至少已经有A1,B1,C1); 剩下的就只有:A2、A3、B1、B2、C1,跑一次ok了 |
|
返回顶楼 | |
发表时间:2008-09-19
怎么都没有考虑并列的情况
|
|
返回顶楼 | |
发表时间:2008-09-19
qiyongjun 写道 你们有没有考虑某个小组实力很强,按真实成绩,前三名都是他们小组的。你们这种方法都不行的
可以的,前三名都是一个小组的情况,只有A组有这个可能,而A2,A3都参加了最后一轮的比赛。 |
|
返回顶楼 | |
发表时间:2008-09-19
lzasi 写道 怎么都没有考虑并列的情况
并列更好说了,只取其中之一比就行。总之不需要比8次以上啊。 |
|
返回顶楼 | |
发表时间:2008-09-19
lzasi 写道 怎么都没有考虑并列的情况
有并列的情况一样啊,把并列的马打包,要参赛的话派一个代表就可以了,要淘汰的话一起淘汰就可以了。 |
|
返回顶楼 | |
发表时间:2008-09-19
zzm_fly2004 写道 呵呵,尝试算了一下,结果如下:
1、将36匹马分6小组,分别进行比赛,得出的比赛名次如下: 第一组:A1、 A2、A3、 A4、 A5、 A6 第二组:B1、 B2、B3、 B4、 B5、 B6 第三组:C1、 C2、C3、 C4、 C5、 C6 第四组:D1、 D2、D3、 D4、 D5、 D6 第五组:E1、 E2、E3、 E4、 E5、 E6 第六组:F1、 F2、F3、 F4、 F5、 F6 2、A1、 B1、 C1、 D1、 E1、 F1进行比赛,假设得出的排名为:A1、 B1、 C1、 D1、 E、1 F1,此时可以断定A1为最快的马,horse1 = A1; 3、拿B1与(A2、A3、 A4、 A5、 A6)进行比赛,如果B1最快,那么horse2 = B1,并跳转到步骤4;如果A2最快,那么horse2 = A2 horse3 = B1, 此时共用的比赛次数为:8; 4、将C1与(A2、A3、 A4、 A5、 A6)进行比赛,如果C1或者A2最快,那么,再将C1或者A2与(B2、B3、 B4、 B5、 B6)进行比赛, 可以确定 horse3 = C1或者 horse3 =B2,此时,共用的比赛次数为:9次; 所以最后,比赛的次数为:8次或者9次。不知道对不对! A3也有可能得第三,你第3步的推理是有问题的 |
|
返回顶楼 | |