n個のキーを持つ配列またはオブジェクトを指定すると、長さがx
のすべての組み合わせを見つける必要があります。 X
が可変であるとします。 binomial_coefficient(n,x)
。オブジェクトのすべてのアイテムの組み合わせを取得する効率的なアルゴリズム
現在、私はこの使用しています:
にfunction combine(items) {
var result = [];
var f = function(prefix, items) {
for (var i = 0; i < items.length; i++) {
result.push(prefix + items[i]);
f(prefix + items[i], items.slice(i + 1));
}
}
f('', items);
return result;
}
var combinations = combine(["a", "b", "c", "d"]);
を出力は、次のとおりです。
["a", "ab", "abc", "abcd", "abd", "ac", "acd", "ad", "b", "bc", "bcd", "bd", "c", "cd", "d"]
私はn=4
から二項係数x=3
をしたいのであれば、私は3と同じ長さのすべての文字列を選択します。 {abc、abd、acd、bcd}。
私はこれを2つのステップで行います。
複雑さの少ない効率的なアルゴリズムはありますか?
リンク:Solution performance (JSPerf)
すべてのいただきありがとうございます。私は、さまざまなブラウザとPCでいくつかの値をテストした後、すべての答え[ここ](https://jsperf.com/binomial-selection)を使ってjsperfテストを作成しました。私はDavidが最も速い解決策を持っていると思います –