実装しようとしています。異なる整数の集合Sが与えられた場合、可能なすべてのサブセット問題を返します。 [A、B、C]、[A、C]、[B]、[B、C]は、[A、B、C] 、[C]]。配列内のすべてのサブセットを検索し、再帰が機能していない、JavaScript
なぜ機能がバックトラックしないのかわかりません。入力[A、A、B、C]については、[[]、["A"]、["A"、 "A"]、["A"、 "A"、 "B" "]、[" A "、" A "、" B "、" C "]]
これは私のコードです。代わりに各再帰呼び出しのための新しい配列を作成する
var subsets = function(A){
/*for input [ A, A, B, C ], appendCount returns [ [A, 2], [B, 1], [C,1] ]*/
var arr = appendCount(A);
result =[[]];
var tempArr = [];
var findSubsets = function(index, tempArr, a) {
var arrCopy = a.slice();
while(index < arrCopy.length) {
if(arrCopy[index][1] > 0) {
tempArr.push(arrCopy[index][0]);
result.push(tempArr.slice());
var newArr = arrCopy.slice();
newArr[index][1] -= 1;
findSubsets(index, tempArr, newArr);
tempArr.pop();
index++;
} else {
index++;
}
}
}
findSubsets(0, tempArr, arr.slice());
return result;
}
事前に感謝
[再帰的関数呼び出しを伴わない順列](http://stackoverflow.com/questions/34013675/permutations-without-recursive-function-call)を参照してください。 – guest271314