9

問題文:

与えられた 4 つの単語を、グリッドの領域ができるだけ小さくなるように、正方形の amxn グリッド内に配置します。

単語は、グリッド内で左から右、上から下に実行する必要があります。文字は重複することがありますが、追加の単語を形成することはできません。すべての単語は、1 つの巨大なチェーンで相互にリンクする必要があります。

「一、二、三、四」という四つの単語で形成できる格子の例。最後のグリッドが最も最適化されていることに注意してください。

ここに画像の説明を入力

私はPythonを学ぼうとしていますが、これは私の歯を切るのに良いアプリケーションだと思いました.

このような問題を解決するためにデータとアルゴリズムを構造化する方法はありますか? 私は率直な答えを探しているわけではありませんが、次のようなヒントがあります。

このライブラリ、このクラス、またはこのデータ構造を使用してください。または、利用可能なスペースを通してこのように繰り返します。

4

1 に答える 1

2

必要なグリッドの最大サイズを考えてみてください。単語がone, two, three,fourの場合、最大サイズのグリッドは次のようになります。

12 x 12。これは、各単語が端から端まで配置され、前の単語の最後の文字を共有するグリッドのサイズです。

これでスペースができました。スペースに単語をどのように配置しますか?力ずくの方法を考えてみてください。それは何を伴うでしょうか?

パターンのすべての可能な組み合わせを反復してみてください。各単語を 24 通りに配置でき、4 つの単語があるため、最大 500,000 の組み合わせがあり、これは現代のコンピューターがチャンクするのに多くはありません。どのパターンが実際に基準を満たしているかを確認します (文字が一致するなど)。

力ずくの方法を手に入れたら、どうすればそれを改良できるでしょうか?

データ構造に関しては、文字を格納できるグリッドだけが必要です。ネストされたリスト構造、numpy 配列、パンダ、またはその他の多くのものを使用できます。最初は単純に問題を解決し、後で改良してください。

于 2013-06-26T15:40:09.893 に答える