Menu
CoddyTech

Rat in a Maze

ネズミは n × n の maze の左上のマスからスタートします。ここで、1 は通行可能なマス、0 は壁を表し、右下のマスに到達しなければなりません。各移動では、通行可能なマスへ下(D)、左(L)、右(R)、または上(U)に1マス進みます。経路は同じマスを2回訪れることはなく、出口で終わります。

すべての経路を移動を表す文字列としてアルファベット順に返してください。経路がない場合は空の配列を返してください。

関数

findPaths(maze: integer-2d-array) → string-array
mazeinteger-2d-array
n × n のグリッド。通行可能なセルは 1、壁は 0
戻り値string-array
左上から右下までのすべての経路を、移動の文字列としてアルファベット順に

制約

  • 2 ≤ n ≤ 5
  • maze[i][j]は0または1です。
  • すべてのテスト用迷路の経路数は最大2,000です。開いた5 × 5の迷路には8,512通りの経路があるため、テストには含まれていません。

例

入力
maze = [[1, 1, 0, 0], [0, 1, 1, 0], [1, 1, 1, 0], [1, 0, 1, 1]]
出力
["RDDRDR", "RDRDDR"]
説明
最初は右側のセルだけが開いており、そこからは下のセルだけが開いているため、どちらの経路も RD から始まります。3手目の D が R より前に来るため、RDDRDR が先に並びます。
challenge icon

発展問題

4つすべての移動が許される場合、列挙せずに経路の数を数えられますか?数が手に負えなくなる前に、n はどこまで大きくできますか?

コードをリセット
def findPaths(maze):
    # ここにコードを書いてください

テスト #1

テスト #2

引数

maze = [[1, 1, 0, 0], [0, 1, 1, 0], [1, 1, 1, 0], [1, 0, 1, 1]]

期待される出力

["RDDRDR", "RDRDDR"]