0

私はこの「テスト」を持っています。たとえば、この問題を解決する必要があります。宿題ではありませんが、テストに合格するために必要です。

何をする必要があるのか​​わからないので、少し助けが必要かもしれません。ここにアルゴリズムが必要です!下の表は迷路を表しています。「1」はその値を通過できないことを意味し、「0」はその値を通過できることを意味します。「T」は達成する宝であり、「H」は入り口です。座標は:H(3.1)、T(2.8)です。

-行列A[1..M、1..N]を読み取るプログラムが必要です。このプログラム自体は、要素[0,1]を持つ迷路を表し、H、T値も読み取ります。

宝物への道を印刷する必要があります。ある場合は、「宝物への道はありません」と表示する必要があります。マトリックスは次のとおりです。

    1 1 1 1 1 1 1 1 1 1
    1 1 0 0 0 1 0 T 0 1
    H 0 0 1 1 1 0 1 1 1
    1 1 0 0 0 0 0 0 0 1
    1 1 1 1 1 1 1 1 1 1
4

1 に答える 1

1

ウォールフォロワーアプローチを使用します。見ている方向(左、右、上、下)を格納する変数が必要です。次に、壁にぶつかるまでその方向に進み続けます。壁に着いたら、歩き続けることができるまで左に曲がり続けます。ターゲットに到達するまでこれを行います。

または擬似コードで:

var walkingDirection = up;
while (not at target)
    if (next field in walkingDirection is not a wall)
        go to next field in walkingDirection
    else
        turn right
    end if
end while

ただし、これは単純に接続されていない迷路では失敗します(そのリンクを読んでください)。

もう少し難しいアプローチは、A*アルゴリズムかもしれません。

于 2013-03-26T17:53:08.763 に答える