注:これは、ロジックの問題などが好きな人にとっては難しい問題です。
高さH、幅Wの長方形の2次元グリッドについて考えてみます。グリッド上のすべてのスペースには、またはのいずれかの値があり0
1
ます2
。最初は、グリッド上のすべてのスペースは、です0
。ただし、最初は。である4つのエッジのそれぞれに沿ったスペースは除きます2
。
次に、隣接する(水平または垂直)グリッドスペースの任意のパスを検討します。パスはa2
で始まり、別ので終わります2
。パスに沿ったすべてのスペースは1
です。
0
パスは、グリッドをスペースの2つの「セクター」に分割します。0
不特定のスペースにあるオブジェクトがあります。オブジェクトを含まない「セクター」は、完全に。で埋める必要があります2
。
グリッド内の値に対応する値( 、、、または)の配列(リスト)を指定して、上から下へ、次に左から右へと進む2
必要があるスペースを決定するアルゴリズムを定義します。つまり、配列のインデックス0の要素には、グリッドの左上のスペースの値(最初はa )が含まれています。インデックス1の要素には、左の列、上から2番目などにあるグリッド内のスペースの値が含まれます。インデックスHの要素には、一番上の行にあるが左から2番目のグリッド内のスペースの値が含まれています。0
0
1
2
2
アルゴリズムが終了し、空の「セクター」がsで完全に満たさ2
れると、同じプロセスを再度実行するには、同じアルゴリズムで十分である必要があります。2回目(およびそれ以降)のパスは、のスペースを横切っ2
て、から別のに描画されますが、他のsに囲まれているsはパスに触れることができないため、「グリッド」は小さくなります(パスはのスペースに沿って。2
0
2
2
0
これを理解してくれた人に感謝します。これは特定のプログラミング言語である必要はありません。実際、擬似コードまたは英語だけで十分です。再度、感謝します!ご不明な点がございましたら、コメントを残していただければ、何を指定する必要があるかをお知らせします。