由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - zz 讨论一道笔试题
相关主题
问几道题求教一道ms的题目
某银行的笔试题"简单的"linklist的问题
请教一下subset I 输出子集顺序问题一个stack怎么sort
问个题目两种DP
国内考公务员不是什么人都能上的判断一个linked list是不是palindrome
qa队伍里losers确实多 尤其是烙印豁出去了,决定怒刷100题
求推荐学习recursive 算法的资料请教recursive backtracking问题的时间复杂度的分析
求教一个combination的问题,求好方法MS a0, a1, ..., b0, b1... 问题
相关话题的讨论汇总
话题: 队伍话题: result话题: order话题: 比赛话题: int
进入JobHunting版参与讨论
1 (共1页)
d**e
发帖数: 6098
1
【 以下文字转载自 InterviewHackers 俱乐部 】
发信人: htd (孩儿她爹), 信区: InterviewHackers
标 题: zz 讨论一道笔试题
发信站: BBS 未名空间站 (Mon Sep 27 13:29:23 2010, 美东)
发信人: xuekai (又四年), 信区: Algorithm
标 题: 讨论一道笔试题
发信站: 水木社区 (Tue Sep 28 00:40:28 2010), 站内
有2~k个足球队进行单淘汰比赛,各个队伍间的胜负关系用矩阵w[i][j]表示,例如队伍
0
与队伍3的胜者是3,则a[0][3]与a[3][0]都是3。队伍间的签位用order[n]表示,最终的
比赛排名用result[n]来表示,下面给出一列:
有4只队伍参加比赛,w[i][j]={{0,1,2,3},{1,1,2,1},{2,2,2,3},{3,1,3,3}}
签位向量order[4]={0,1,2,3}
则首先队伍0与队伍1比赛,1胜出,然后2与3比赛,3胜出,第二轮1与3比赛,1胜出,则
result[4]={1,3,0,2} 其中队伍0与2
t****a
发帖数: 1212
2
O(n) time, O(n) space (just the result vector)
void game(int w[][], int order[], int result[], int n) {
# compare 1 v 2, 3 v 4, 5 v 6 and fill the losers to the tail of result,
and winners to the head of order
# recursively invoke game(w, order, result, n/2)
# until n = 0
}
p********7
发帖数: 549
3
这个需要复杂算法么?
从order向量依次获得比赛结果,我觉得可以把上层结果输入到一个新的vector,
比如先order是 2,3,5,6,4,1,0
新的order就是 win(2,3),win(5,6),win(4,1),0
把loser 压入一个stack
然后再次执行上面的代码,till order只有1个元素,stack里面就是要的结果
d**e
发帖数: 6098
4
感觉这个主意不错。
但我觉得losers放后面,winner放前面这一步不容易做。
losers的顺序没关系,但winner的顺序又要保持和原来一致。
Array[n],奇数序号的放在 0 - n/2,偶数序号的放在
n/2 + 1 -- n,而且保持原有顺序不变,能否可以O(n)做得到?

【在 t****a 的大作中提到】
: O(n) time, O(n) space (just the result vector)
: void game(int w[][], int order[], int result[], int n) {
: # compare 1 v 2, 3 v 4, 5 v 6 and fill the losers to the tail of result,
: and winners to the head of order
: # recursively invoke game(w, order, result, n/2)
: # until n = 0
: }

d**e
发帖数: 6098
5
我觉得也是除了result外,额外需要O(n)的空间,再加O(n)的时间。

【在 p********7 的大作中提到】
: 这个需要复杂算法么?
: 从order向量依次获得比赛结果,我觉得可以把上层结果输入到一个新的vector,
: 比如先order是 2,3,5,6,4,1,0
: 新的order就是 win(2,3),win(5,6),win(4,1),0
: 把loser 压入一个stack
: 然后再次执行上面的代码,till order只有1个元素,stack里面就是要的结果

f***g
发帖数: 214
6
Loser tree?
d**e
发帖数: 6098
7
应该是差不多,我觉得相当于构造一个binary tree

【在 f***g 的大作中提到】
: Loser tree?
m**q
发帖数: 189
8
这个好像是可以做的
每次比较把winner放在奇数序号,把loser放在偶数序号,
然后再做一次quick sort的partition,就把winner全都
swap到前面,loser全部放到后面去了;
然后记住有多少个winner,再进行下一轮...

【在 d**e 的大作中提到】
: 感觉这个主意不错。
: 但我觉得losers放后面,winner放前面这一步不容易做。
: losers的顺序没关系,但winner的顺序又要保持和原来一致。
: Array[n],奇数序号的放在 0 - n/2,偶数序号的放在
: n/2 + 1 -- n,而且保持原有顺序不变,能否可以O(n)做得到?

1 (共1页)
进入JobHunting版参与讨论
相关主题
MS a0, a1, ..., b0, b1... 问题国内考公务员不是什么人都能上的
convert bst to doubly linked list 求个干净容易理解的答案qa队伍里losers确实多 尤其是烙印
有人同看Populating Next Right Pointers in Each Node II的recursive写法么?求推荐学习recursive 算法的资料
DFS 堆栈溢出,怎么破?求教一个combination的问题,求好方法
问几道题求教一道ms的题目
某银行的笔试题"简单的"linklist的问题
请教一下subset I 输出子集顺序问题一个stack怎么sort
问个题目两种DP
相关话题的讨论汇总
话题: 队伍话题: result话题: order话题: 比赛话题: int