Bạn là một lái xe taxi ở San Francisco. Là điển hình của trình điều khiển xe taxi, bạn đang điều hướng một lưới trong đó các hướng hợp lệ duy nhất bạn có thể di chuyển là trái, phải, lên và xuống. Tuy nhiên, San Fransisco rất đồi núi nên khoảng cách giữa hai giao lộ liền kề không nhất thiết phải giống nhau. Cụ thể hơn, khoảng cách giữa một giao lộ ở độ cao a
và một giao lộ liền kề ở độ cao b
sẽ là 1 + |a - b|
. Mục tiêu của bạn là tìm tất cả các con đường ngắn nhất từ nguồn gốc của bạn ở phía trên bên trái của bản đồ đến đích ở phía dưới bên phải.
Đầu vào
Lưới hai chiều có độ cao nguyên ở định dạng nào thuận tiện nhất (mảng hai chiều, mảng một chiều có chiều rộng và / hoặc chiều cao, v.v.).
Đầu ra
Một chuỗi các hướng để đi đến góc dưới bên phải của đầu vào từ trên cùng bên trái trong khoảng cách ngắn nhất có thể được đưa ra khoảng cách giữa hai giao điểm cao độ liền kề a
và b
được đưa ra theo công thức 1 + |a - b|
. Nếu có nhiều giải pháp đầu ra tất cả các giải pháp.
Mặc dù tôi sử dụng U
, D
, L
, và R
cho lên, xuống, trái, và ngay trong các ví dụ dưới đây chương trình của bạn có thể sử dụng bất kỳ bốn dây độc đáo thể hiện các hướng dẫn miễn là nó phù hợp với chúng trong và trên tất cả các đầu vào.
Ví dụ
Input:
0 3 0 0 0
0 2 0 2 0
0 0 0 3 0
Output:
D D R R U U R R D D
Input:
3
Output:
<empty>
Input:
11 11 11
11 11 11
11 11 11
Output:
R R D D
R D R D
R D D R
D R R D
D R D R
D D R R
Input:
7 8 1 -1 0
4 4 6 -1 7
3 4 4 2 8
2 5 2 -1 2
Output:
D R D R R D R
D R D R D R R
Đây là môn đánh gôn, vì vậy câu trả lời có số byte ngắn nhất sẽ thắng.