給定一個由元素數組表示的排列,是否可以有效地計算第n 個排列,而無需計算其間的每個排列?
答案在於階乘分解。考慮排列的字典順序。透過將排列的索引分解為階乘分數,我們可以推導出具體的排列。
這種方法允許我們直接跳到所需的排列,而不需要強力迭代。
例如,給定一個陣列{A, B, C},大小為2 的第三個排列的階乘分解將為(2! * 0) (1! * 1) = (2 * 0 ) (1 * 1) = 1。這對應於第 1 個元素 (B),後面跟著第 0 個元素 (A)。
以下 C 實作示範了此技術:
呼叫 ithPermutation(10, 3628799) 傳回十個元素的最後一個排列:
以上是我們怎樣才能在不使用蠻力的情況下有效地找到第n個排列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!