問題タブ [heaps-algorithm]
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.
algorithm - ヒープのアルゴリズムの読み方は?
文字 A - G (7) のすべての可能な順列を生成したいのですが、ヒープのアルゴリズムがこれを可能にすると言われています。
ただし、ウィキペディアのページの疑似コードを見ると、次のように表示されます。
……意味がわからない。
したがって、7 つの文字 (AG) がある場合、最初の 6 文字のすべての可能な順列を見つけるように見えますが、最後の文字は同じままです。
つまり、G が最後にある間に AF のすべての可能な順列を見つけ、各文字が最後になるまでそれを行います。
つまり、「N」は奇数なので、常に最後の文字 (7 番目の文字) を最初のスロットにある文字と入れ替えます。
しかし(これがどのように機能するかはわかっていますが、それが私が得ているすべてです)それは、同じ2文字が常に交換され、異なる順列がなくなるだけではありませんか?
過去 4 時間にわたって Google の結果を精査しましたが、上記の疑似コードを 1 行ずつ説明するものは見つかりません。
助けていただければ幸いです!!
php - 同じ文字が連続しない配列の数
この質問は、私の質問hereに関連しています。私の数学が正しいかどうかを確認するために、プログラムで次のカウントを取得しようとしています。
PQRDDDEEEEFFFFFF という単語の文字の並び方で、同じ文字が連続していないものはいくつありますか?
PHPプログラムを使用してこのカウントを決定する方法は?
私のアプローチ
- ヒープのアルゴリズムを使用してすべての可能な順列を生成し、配列に格納しました(ヒープのアルゴリズムがより高速に検出されるため、ヒープのアルゴリズムを使用しました)
- array_unique 関数を使用してすべての重複を削除しました
- 配列を反復処理し、正規表現 /(.)\1/ を使用して隣接する文字が同じである文字列を特定し、隣接する文字が同じでない文字列を新しい配列にコピーしました。
- 新しい配列には、必要な要素のリストがあります。
私のアプローチはうまく機能しています。ただし、大きな文字列 (10 文字を超える文字列) の場合、順列の数が多いためにメモリの問題が発生し、プログラムが機能しません。
これをプログラムで判断する別の方法はありますか?
ノート:
文字列のリストではなく、カウントのみを探しています
java - リストのサブセクション内で順列の配列を作成する
だから私はリストを持っています:
一致する番号ごとに、識別子のすべての順列を取得する必要があります。私の例から必要なリストは次のとおりです。
問題を解決するために現在行っている手順:
- リストを読み込み、各値を配列 ([a][12]) に配置し、それを ArrayList に配置します。
- 次に、繰り返し番号があるかどうかを調べて、HashMap 内にメモします。
- 次に、HashMap を通過するように for ループを設定します。番号が繰り返されない場合は、リストに追加します。数値が繰り返された場合は、ヒープのアルゴリズムを使用してすべての順列を取得します。
私がそれを処理する場合、次のように番号をリストに追加します。
私の現在のコードは意図したとおりに機能せず (リストを 1 つしか生成しません)、古いリストを追加しながら、新しいリストを継続的に生成するコードを書き始める方法さえわかりません。道に迷って申し訳ありません。私は現在データ構造のコースを受講しており、すべてが慣れ親しんだ領域から外れているように感じます (連結リストについての議論を始めたばかりです)。
注 1: allLists は現在のすべてのリスト (a、abcd、adcb) を保持し、permutationList はリストのすべての順列を保持します。
注 2: ブール リストを使用してこれを行っていますが、達成しようとしていることを簡単に視覚的に表現するために文字を使用しました。
問題があると予想されるコード: