求比賽名次 微軟面試100題 第三十六題

2021-06-26 19:48:00 字數 1057 閱讀 1185

題目要求:

n支隊伍比賽,分別編號為0,1,2,...,n-1,已知它們之間的實力對比關係儲存在乙個二維陣列w[n][n]中,w[i][j]的值代表編號為i,j的隊伍中更強的一支,所以w[i][j] = i或者j.

現在給出它們的出場順序,並儲存在陣列order[n]中,比如order[n] = ,那麼第一輪比賽就是4對3,5對8.勝者晉級,敗者淘汰,同一輪淘汰的所有隊伍排名不再細分,即可以隨便排,下一輪由上一輪的勝者按照順序,再一次兩兩比,比如可能是4對5,直至出現第一名。

程式設計實現,給出二維陣列w,一維陣列order和用於輸出比賽名次的陣列result[n],求result.

題目分析:

假設出場次序為:1 3 4 2 0 5,實力圖和過程講解如下圖:

**實現:

#include #include using namespace std;

const int n = 6;

void calc(int ppw[n],int *porder,int *presult,int n);

int main(void)

,,,,,};

int order[n] = ;

int result[n] = ;

calc(w,order,result,n);

cout << "名次由高到低為:";

for(int i = 0;ivectorder;

for(int i = 0;i1)

else}}

}if(vectorder.size()==1)

presult[ncurpos--] = *(vectorder.begin());

}

微軟面試100題

41.求固晶機的晶元查詢程式 晶元盤由數目不詳的大小一樣的晶元組成,晶元並不一定全布滿晶元盤,照相機每次這能匹配乙個晶元,如匹配過,則拾取該晶元,若匹配不過,照相機則按測好的晶元間距移到下乙個位置。求遍歷晶元盤的演算法 求思路。兩個非降序鍊錶的並集,1 2 3 和 2 3 5 並為 1 2 3 5 ...

求子陣列的最大和 微軟面試100題 第三題

題目要求 輸入乙個整型陣列,陣列裡有整數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有個乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如 輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸出為該子陣列的和18。參考資料 劍指o...

微軟面試100題之第三題 求子陣列的最大和

int maxsubarray int a,int size else if sum 0 return max 接下來我給出幾個時間複雜度不同的c 演算法,僅供參考。int maxsubsum const vector a return maxsum 可以看到此處用到了c 中的vector類,使用了...