2017-02-13 17 views
-2

C++プログラミング言語のn個のベクトルの長さのすべての可能な文字列の組み合わせで、ベクターを移入することができますし、私は、nのすべての組み合わせで、空のベクターを埋めるためにしようとしている方法100のグループからの文字列(N = 1、2、3、...)一つは、私は100個の文字列のベクトル、別の空のベクトルを持っている

n = 1であれば、あなたは(ベクトルとして、またはすべての100個の文字列)1列からなるごとにユニークなベクトルを得る

N = 2は、あなたが2列(または100^2バリエーション)で構成されるすべての固有ベクトルを取得する場合

C++は私の母国語ではありません。

これまでのところいくつかの試みがありましたが、Zou_script(独自の社内)で行うことは、各文字列に番号を割り当ててから、これらの数字のすべての組み合わせを順番に並べ替えてから、ベクトル[]を押してベクトルを作成します。

これは文字列の銀行は非常に大きかった場合、メモリ内の文字列バンクが悪い可能性が保持、遅いようだと優雅さの欠如を持っています。

私がのstd :: next_permutationを使用しているが、私は、文字列で構成されるベクトルを並べ替えにエレガントな、それを拡張し、トラブルを抱えています。

どのようにして、ベクトルをn個のベクトル長の可能なすべての文字列の組み合わせにC++プログラミング言語で取り込むことができますか? < - 質問。

誰でも助けてもらえますか?あなたが確信していない、または質問によって脅かされているなら、次のものに行くことはOKです。

アップデートは

私はC++で技術を複製するために管理しているが、それはそれだけで、n個の量まで、全体の置換ベクトルを計算する必要はありません理解していないので、next_permutationはかなり遅いです。

ベクトル置換のx要素だけを計算するためにnext_permutationを操作する方法はありますか?

+0

ようこそスタックオーバーフロー。 [The Tour](http://stackoverflow.com/tour)を読み、[ヘルプセンター](http://stackoverflow.com/help/asking)の資料を参考にしてください。ここに聞いてください。 –

+0

私は*ループ*がすべての*順列*または*の組み合わせを生成する必要があると推測しています。ヒント:インターネットで「C++順列の例」または「C++生成の組み合わせの例」を検索します。 –

+0

100個のエントリのセットのうち、* every *の組み合わせでベクトルを設定してもよろしいですか?これは約1e + 158のエントリのベクトルになります。これは通常のマシンのメモリにはまったく適合しません。 –

答えて

0

私はこの質問をしましたが、私は答えを与えることができます。これは実際によく研究され、よくC/C++で質問されます。

"一度にr個の要素のグループの順列を考える方法は?"

問題に取り組む方法はたくさんあります。そのような方法の1つは、要素のベクトルにマップするための整数のベクトルを生成することです。 std ::あなたは数字(整数ベクトルの順列)のリストを生成し、あなたが検討しているアイテムの量に切り捨てることができnext_permutationを使用

。このリストは、ベクトルツールを使用してソートすることができます。重複は削除されます。これは、要素ベクトルへのマッピングのために、一度にr個の整数のすべてのユニークな順列のリストを提供します。

それからそれはあなたの順列の整数リストからR番号を呼び出して、あなたの要素の順列を生成するために、あなたの要素リストのインデックスでそれらを使用すると同じくらい簡単にすることができます。

for (int k = 0; k < linecount_of_integer_permutation_list; k++) 
{ 

    // insert code for calling up integer permutation list line 
    // and assigning that permutation to vector 

for (int i = 0; i < r; i++) 
{ 
file << element[intvec[r]]; // can put whatever delimiters you want/need 
} 
file << std::endl; 
intvec.clear(); 
// remember to clear vectors, or other flags depending on what you need 
} 

これは煩雑で非常に遅いです。

https://howardhinnant.github.io/combinations.html

速く、この問題に対処する方法についていくつかの非常に良いアイデアを持っています。上記は小さなセットではうまくいくが、小さなものから絶対的に手に負えないものへのジャンプは順列において非常に速い。

ありがとうございました。それは実際には興味深い質問ですが、明らかにプログラミングにおける多くの人々のアプリケーションには必要ありません。

関連する問題