題目描述:
在 nba 季後賽中,我們總是安排較強的隊伍對戰較弱的隊伍,例如用排名第 1 的隊伍和第 n 的隊伍對決,這是乙個可以讓比賽更加有趣的好策略。現在,給你 n 支隊伍,你需要以字串格式輸出它們的 最終 比賽配對。
n 支隊伍按從 1 到 n 的正整數格式給出,分別代表它們的初始排名(排名 1 最強,排名 n 最弱)。我們用括號(』(』, 『)』)和逗號(』,』)來表示匹配對——括號(』(』, 『)』)表示匹配,逗號(』,』)來用於分割。 在每一輪的匹配過程中,你都需要遵循將強隊與弱隊配對的原則。
示例 1:
輸入: 2
輸出: (1,2)
解析:初始地,我們有隊1和隊2兩支隊伍,按照1,2排列。
因此 用 『(』, 『)』 和 ','來將隊1和隊2進行配對,得到最終答案。
示例 2:
輸入: 4
輸出: ((1,4),(2,3))
解析:在第一輪,我們將隊伍1和4配對,2和3配對,以滿足將強隊和弱隊搭配的效果。得到(1,4),(2,3).
在第二輪,(1,4) 和 (2,3) 的贏家需要進行比賽以確定最終贏家,因此需要再在外面加一層括號。
於是最終答案是((1,4),(2,3))。
示例 3:
輸入: 8
輸出: (((1,8),(4,5)),((2,7),(3,6)))
解析:第一輪: (1,8),(2,7),(3,6),(4,5)
第二輪: ((1,8),(4,5)),((2,7),(3,6))
第三輪 (((1,8),(4,5)),((2,7),(3,6)))
由於第三輪會決出最終勝者,故輸出答案為(((1,8),(4,5)),((2,7),(3,6)))。
注意:
n 的範圍是 [2, 212].
保證 n 可以寫成 2k 的形式,其中 k 是正整數。
方法1:
主要思路:
(1)把每輪的字串元素,根據最強和最弱的規則進行組合;
class
solution
int left,right;
while
(n>1)
//找下一輪的元素的數量
n>>=1;
}//返回最終的組合
return strs[0]
;}};
1688 比賽中的配對次數
題目描述 給你乙個整數 n 表示比賽中的隊伍數。比賽遵循一種獨特的賽制 如果當前隊伍數是 偶數 那麼每支隊伍都會與另一支隊伍配對。總共進行 n 2 場比賽,且產生 n 2 支隊伍進入下一輪。如果當前隊伍數為 奇數 那麼將會隨機輪空並晉級一支隊伍,其餘的隊伍配對。總共進行 n 1 2 場比賽,且產生 ...
1688 比賽中的配對次數
給你乙個整數 n 表示比賽中的隊伍數。比賽遵循一種獨特的賽制 如果當前隊伍數是 偶數 那麼每支隊伍都會與另一支隊伍配對。總共進行 n 2 場比賽,且產生 n 2 支隊伍進入下一輪。如果當前隊伍數為 奇數 那麼將會隨機輪空並晉級一支隊伍,其餘的隊伍配對。總共進行 n 1 2 場比賽,且產生 n 1 2...
20 12 21 1688 比賽中的配對次數
給你乙個整數 n 表示比賽中的隊伍數。比賽遵循一種獨特的賽制 如果當前隊伍數是 偶數 那麼每支隊伍都會與另一支隊伍配對。總共進行 n 2 場比賽,且產生 n 2 支隊伍進入下一輪。如果當前隊伍數為 奇數 那麼將會隨機輪空並晉級一支隊伍,其餘的隊伍配對。總共進行 n 1 2 場比賽,且產生 n 1 2...