このような質問には、この場所が最適だと思います。
私は次の問題を抱えています(見た目よりも複雑だと思います)。
文字列の両端キュー (deque) データ構造を使用しています。deque < 文字列 > 抽出。
両端キューには N 個の異なる文字列のみが含まれ、各文字列はランダムな順序で M 回繰り返されるため、両端キューの長さは N*M になります。たとえば、M=4、N=2、string1="A"、string2= とします。 "B":
extractions[1] = "A"
extractions[2] = "A"
extractions[3] = "B"
extractions[4] = "B"
extractions[5] = "A"
extractions[6] = "B"
extractions[7] = "B"
extractions[8] = "A"
私は、2 つの連続した等しい要素が存在しない興味深い構成を見つけることができるアルゴリズムを探しています。この場合、「A」、「B」、「A」 「B」、「A」、「B」、「A」、「B」および「B」、「A」、「B」、「A」、「B」、「A」、「B」、」あ」。「興味深い」構成とは、ネストされたループの数 N によって単純に与えられない構成を意味します。
私が実装した非常にばかげた解決策はstd::random_shuffle、連続する等しい要素が見つからなくなるまでデッキをランダムにシャッフルすることですが、これはばかげていると同時に遅く、ボゴソートのようなものです...
文字列間の編集距離を明らかに最大化する方がよいはずです。何かヒント?