2012-09-22 30 views
-1

我需要爲數字列表生成所有排列。數字列表將從1到n。排列的大小也可以是1到m。因此,如果給定的n = 4,M = 3,我需要有排列:n個數的排列

111 
112 
113 
114 
121 
122 
123 
124 
131 
132 
133 
134 
142 
142 
143 
144 
211..... 

等..

也應該使用哪個遞歸/迭代的,爲什麼呢?

+0

顯示yopur嘗試... –

+0

這不是排列 - 排列沒有重複。此外 - 這是幾乎私人的情況下[這個線程](http://stackoverflow.com/questions/10149523/generate-a-combination-of-numbers) – amit

+0

沒有嘗試..我沒有線索:( – CodeMonkey

回答

0

下面是一個算法,該算法從先前的一個詞彙順序返回下一個置換:

  1. 查找最大索引k,使得[k]的一個< [K + 1]。如果不存在這樣的索引,則排列是最後的排列。
  2. 找到最大的索引l使得a [k] < a [l]。由於k + 1是這樣的索引,所以l被很好地定義並且滿足k 1 2 3。
  3. 用[l]交換a [k]。
  4. 顛倒從[k + 1]直到幷包括最終元素a [n]的序列。

嘗試實施它。