質問

私はの非常にのロングワード(antidisestablishmentarianism)のためのすべてのユニークな順列を計算しようとしてきた、と私は単語の順列を計算することができますが、私はの生産を停止することで問題が発生しています重複ます。

通常、私はちょうど私の文字列にList<T>.Contains()メソッドを実行するだろうが、順列のリストは、私がメモリに保管することはできませんので、大きくなります。私は以前そのミスを犯し、自分のコンピュータのメモリのすべての8ギガバイトを使い切ることができました。再び起きてからそれを防ぐために、私は、ファイルに算出した順列を追加し、それをメモリから解放するためにコードを変更します。

をどのようにメモリに全部をロードせずに自分のファイルに追加されることから、重複順列を防ぐことができます。のそれは選択、例えば、最初の数メガバイトをロードすることは可能です:?

私の主な質問はこれです、それをスキャンし、ファイルが完了するまでに移動したり、私は別の方向に見てすべきですか?

これは私の数学の宿題は、コンピュータが毎秒30個の順列を計算することができる仮想的な状況を与え、私はそれがすべての順列を計算するのにかかる時間の長さを見つけ出す行われ、宿題ではありません。それは問題ではなかった、と私はそれで助けを必要としない、私はちょうどそれが同じタスクを実行するために、現代のコンピュータを取るだろうどのくらい知りたいと思いました。

役に立ちましたか?

解決

どのの重複なしのすべての順列を生成するアルゴリズムを使用してはどうですか?そうすれば、あなたは最初の場所でそれらをチェックする必要はありません。

「アルゴリズムは順列を生成する」のGoogle検索は、あなたが始めるための参照の数十を折り返します。例えば順列の生成方法

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top