問題タブ [permutation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
6566 参照

algorithm - 特定のビット数が設定された複数の数値の作成

問題

32ビットの数値を作成する必要があり(符号付きか符号なしかは関係ありません。とにかく最上位ビットが設定されることはありません)、各数値には特定の数のビットが設定されている必要があります。

素朴な解決策

もちろん、最も簡単な解決策はゼロから始めることです。ループ内では、数値が 1 ずつ増加し、ビット数がカウントされます。カウントが目的の値である場合、数値がリストに格納されます。そうでない場合は、ループが繰り返されます。十分な数が見つかった場合、ループは停止します。もちろん、これは問題なく動作しますが、必要なビット数が非常に多くなると、非常に遅くなります。

より良いソリューション

(たとえば) 5 ビットが設定されている最も単純な数値は、最初の 5 ビットが設定されている数値です。この番号は簡単に作成できます。ループ内で最初のビットが設定され、数値が 1 つ左にシフトされます。このループは 5 回実行され、5 ビットが設定された最初の数値が見つかりました。次の数も簡単に作成できます。ここで、数値が 6 ビット幅であると仮定し、最高の数値は設定されていません。ここで、最初の 0 ビットを右にシフトし始め、101111、110111、111011、111101、111110 を取得します。前に別の 0 を追加してこのプロセスを繰り返すことで、これを繰り返すことができます。0111110、1011110、1101110 など。ただし、この単純なアプローチを使用すると、1010111 などの数字が除外されるため、数字が必要以上に速く成長します。

次の数値のビット数に関係なく、設定する必要があるビット数に関係なく、使用できるすべての可能な順列、一般的なアプローチを作成するより良い方法はありますか?

0 投票する
2 に答える
7442 参照

algorithm - ベクトルの順列

ベクトルがあるとします:

そして、そのインデックスの順列:

このようにして得られる順列に従ってそれを再分類する効率的な方法はありますか:

最大で O(1) の追加スペースを使用しますか?

0 投票する
7 に答える
28150 参照

perl - Perlで配列のすべての順列を生成するにはどうすればよいですか?

n!perlで配列のすべての順列を生成するための最良の(エレガントで、シンプルで、効率的な)方法は何ですか?

たとえば、配列がある場合、@arr = (0, 1, 2)すべての順列を出力したいと思います。

これはおそらくイテレータを返す関数である必要があります(n!非常に大きくなる可能性があるため、評価の遅延/遅延)。したがって、次のように呼び出すことができます。

0 投票する
3 に答える
989 参照

string - 文字列のすべての可能な順列を生成する C プログラムのバグはどこにありますか?

文字列のすべての可能な順列を生成する C プログラムを作成しようとしています (たとえば、以下のコードでは 123)。成功しましたが、可能な順列ごとにガベージ値が生成されます。考えられる原因を見つけるのを手伝ってください。初期化とか関係あるの?コード:

0 投票する
2 に答える
821 参照

algorithm - リストを使用せずに二分木を並べ替える

二分木の可能なすべての順列を生成するためのアルゴリズムを見つける必要があり、リストを使用せずにそれを行う必要があります(これは、ツリー自体がリストに変換できないセマンティクスと制約を持っているためです)。高さが3以下の木で機能するアルゴリズムを見つけましたが、高さが高くなると、追加された高さごとに1セットの可能な順列が失われます。

各ノードは元の状態に関する情報を保持しているため、1つのノードは、そのノードに対してすべての可能な順列が試行されたかどうかを判断できます。また、ノードは天気に関する情報を保持しているか、「スワップ」されているかどうか、つまり、サブツリーのすべての可能な順列を確認したかどうかを確認します。ツリーは左中央にあります。つまり、右側のノードは常にリーフノードである必要がありますが(このアルゴリズムでカバーする必要がない場合を除く)、左側のノードは常にリーフまたはブランチのいずれかです。

私が現在使用しているアルゴリズムは、次のように説明できます。

アルゴリズムの望ましい動作は次のようになります。

等々...

0 投票する
27 に答える
199143 参照

c# - 文字列/整数のすべての順列を一覧表示する

インタビューをプログラミングする際の一般的なタスクは (私のインタビューの経験からではありませんが)、文字列または整数を取り、可能なすべての順列をリストすることです。

これがどのように行われるか、およびそのような問題を解決するためのロジックの例はありますか?

いくつかのコード スニペットを見てきましたが、コメントや説明が不十分で、理解するのが困難でした。

0 投票する
1 に答える
960 参照

c# - Creating string permutations

Why doesn't this produce the correct number of string permutations? For

it should print 27 different permutations.