3
開始文字と終了文字が一致する単語の最長リスト
私の友人は、彼が簡単だと言っている問題を私に与えましたが、私はそれをするのに使う良いアルゴリズムを見つけられません。 100個のランダムな英語の単語が入力されます。ある単語の最後の文字が次の単語の最初の文字と一致する単語の最も長い文字列を見つける必要があります。各単語は1回しか使用できません。 たとえば、「cat」、「dog」、「that」という単語を指定した場合、作成できる最長の文字列は「cat-> that」になります。「マウス」、「ムース」、「ユニコーン」という単語が与えられた場合、作成できる最長の文字列は1つの単語になります(これらの単語はリンクしていないため)。「鳥」、「皿」、「港」という単語が与えられた場合、作成できる最長の文字列は「港->鳥->皿」(または「皿->港->鳥」または「鳥- >皿->ハーブ」)。 これを有向巡回グラフとしてモデル化するというアイデアを思いつきました。各ノードは単なる単語であり、頂点はこの単語が終わる文字で始まる各単語/ノードに移動します。 +-------+ \ +------+ | cat |-----------| that | +-------+ / +------+ | | \|/ | +-------+ / | | the |--------------+ +-------+ \ この問題は、NP-Hardである最長パス検索のようです。 それを行うより良い方法はありますか?または、使用できる近似アルゴリズムのようなものもありますか?または、検索スペースを削減するために英語の資質を活用する方法はありますか?
11
algorithms