Menu
CoddyTech

Rat in a Maze

Trung bìnhQuay luipython iconjava iconcpp iconc iconjs icon+10

Một con chuột bắt đầu ở ô trên cùng bên trái của n × n maze, trong đó 1 là ô trống và 0 là tường, và phải đến ô dưới cùng bên phải. Mỗi lần di chuyển, chuột đi một ô xuống dưới (D), sang trái (L), sang phải (R) hoặc lên trên (U) vào một ô trống. Đường đi không bao giờ đi qua cùng một ô hai lần và kết thúc ở lối ra.

Trả về mọi đường đi dưới dạng chuỗi các bước di chuyển, theo thứ tự bảng chữ cái, hoặc một mảng rỗng nếu không có đường đi nào.

Hàm

findPaths(maze: integer-2d-array) → string-array
mazeinteger-2d-array
lưới n × n, với 1 là ô trống và 0 là tường
Trả vềstring-array
mọi đường đi từ góc trên bên trái đến góc dưới bên phải dưới dạng chuỗi các bước di chuyển, theo thứ tự bảng chữ cái

Ràng buộc

  • 2 ≤ n ≤ 5
  • maze[i][j] là 0 hoặc 1.
  • Mỗi mê cung trong test có nhiều nhất 2.000 đường đi. Mê cung 5 × 5 không có vật cản có 8.512 đường đi, nên không nằm trong các test.

Ví dụ

Đầu vào
maze = [[1, 1, 0, 0], [0, 1, 1, 0], [1, 1, 1, 0], [1, 0, 1, 1]]
Đầu ra
["RDDRDR", "RDRDDR"]
Giải thích
Lúc đầu, chỉ ô bên phải được mở, rồi từ đó chỉ ô bên dưới được mở, nên cả hai đường đi đều bắt đầu bằng RD. RDDRDR được xếp trước vì nước đi thứ ba, D, đứng trước R.
challenge icon

Câu hỏi mở rộng

Với cả bốn nước đi đều được phép, bạn có thể đếm số đường đi mà không cần liệt kê chúng không? n có thể lớn đến mức nào trước khi không thể đếm nổi?

Đặt lại code
def findPaths(maze):
    # Viết code tại đây

Kiểm thử #1

Kiểm thử #2

Đối số

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

Đầu ra mong đợi

["RDDRDR", "RDRDDR"]