0

私はソートとアルゴリズムをあまり使用しておらず、ベクトルで問題ありません。最近、私は興味深い質問に直面し、それを解決する方法についてあなたの提案を求めています. だから、以下は私の質問です。

Q、ベクター内に 4 つの文字列が与えられましたが、それらの文字に応じて特定の順序で配置する必要があります。したがって、任意の文字列の最後の文字が他の文字列の最初の文字と一致し、この文字列の最後の文字が他の文字列の最初の文字と一致する必要があるため、可能な限り長い文字列を作成する必要があります。

たとえば、「ABCD」「TGHI」「DADC」「IYUR」「CXYT」のような文字列ベクトルがある場合、「ABCD」のように配置され、3 番目の文字列「DADC」が存在し、5 番目の文字列が存在します。 「CXYT」などなので、結果は「ABCD」「DADC」「CXYT」「TGHI」「IYUR」になります。

さて、上記のルールに従って「互換性がある」場合、各文字列を他の文字列とチェックするのが良い考えかどうか疑問に思っていました..ベクトルに5つの文字列がある場合、5 + 4 + 3になります+2+1 の可能性と、たとえば 20 個の文字列がある場合、それは大幅に増加するので、これは良い考えですか、それともこれに対する他の効率的な解決策はありますか... どうもありがとうございました。

4

2 に答える 2

1

すべての文字がグラフのノードであると想像してください。各単語は、in の 2 文字の間の有向経路を表します。「ACCA」は、 A->A を定義します。このグラフ内で、オイラー パスを見つけたいと考えています。http://en.wikipedia.org/wiki/Eulerian_path 。オイラー パスは、すべてのエッジを 1 回だけ訪れるパスとして定義されます。各エッジは単語を表すため、すべての単語を使用したことを意味します。

于 2012-02-09T19:42:08.303 に答える
0

より良いアプローチは、文字列を使用して有向グラフを作成することです。の最後の文字がの最初の文字と同じである場合、文字列から文字列s1へのエッジがあります。次に、グラフで最長のパスを見つけようとします。s2s1s2

于 2012-02-09T19:37:50.607 に答える