我想弄清楚如何編寫一個函數,它需要兩個整數,n和k,並且找到所有嚴格遞減的從0到n的整數長度k的序列。查找長度爲k的所有遞減序列的列表?
例如,allDecreasing(5,3)返回
[[4,3,2],[4,3,1],[4,3,0],[4,2, 1],[4,2,0],[4,1,0],[3,2,1],[3,2,0],[3,1,0],[2,1,0] ]
到目前爲止,我只有:
function all-decreasing(n, k) {
if (n > k-1) {
all-decreasing(n-1, k);
}
}
它的並不多,因爲我不太知道如何處理迭代的一部分。置換和子集算法一直困擾着我。如果有人可以給我一個關於如何開始的想法,那將不勝感激!謝謝。
從範圍中選擇n個整數,排序。要選擇每個這樣的集合一次,有許多實現,請參見[這裏](http://stackoverflow.com/questions/4504974/how-to-iteratively-generate-k-elements-subsets-from-a-set-例如java中的size-n-in-size)。 – 2014-11-05 11:02:20