现在有 n=2^k(k为正整数)支足球队,编号为0,1,...,n-1,给出二维数组winner[][],winner[i][j]表示当编号为i的队和编号为j的队比赛时,会胜出的队伍的编号,winner[i][j]一定是i,j之中的一个(不存在平局),输入保证winner[i][j]=winner[j][i],现在给出一个单败淘汰赛的签位一位数组order[],order[i]表示第i个签位上的队伍的编号,order保证是0到n-1的一个排列。返回比赛最后的排名顺序,同一轮被淘汰的队伍名次并列,并列的队伍之间的排名顺序任意。要求时间和空间复杂度尽量低。
将结果写到一维数组result[]里面即可。 接口定义:
c:
void calculate_result(int n, int **winner, int *order, int *result);
c++:
void calculate_result(int n, vectorwinner, vectororder, vectorresult);
Java:
void calculate_result(int n, int [][]winner, int []order, int []result);