答案:DDDDRRURRRRRRDRRRRDDDLDDRDDDDDDDDDDDDRDDRRRURRUURRDDDDRDRRRRRRDRRURRDDDRRRRUURUUUUUUULULLUUUURRRRUULLLUUUULLUUULUURRURRURURRRDDRRRRRDDRRDDLLLDDRRDDRDDLDDDLLDDLLLDLDDDLDDRRRRRRRRRDDDDDDRR
#include<iostream>
#include<string>
#include<fstream>
#include<algorithm>
#include<queue>
using namespace std;
struct Node {
int x;
int y;
string ans;
Node(int x, int y, string ans) : x(x), y(y), ans(ans) {}
};
int main() {
char data[30][50];
for (int i = 0; i < 30; i++) {
for (int j = 0; j < 50; j++) {
cin >> data[i][j];
}
}
auto *pro = new queue<Node *>();
int visit[30][50] = {0};
auto *temp = new Node(0, 0, "");
pro->push(temp);
while (!pro->empty()) {
int x = pro->front()->x;
int y = pro->front()->y;
string path = pro->front()->ans;
pro->pop();
if (x == 30 - 1 && y == 50 - 1) {
cout << path;
break;
}
char ch[5] = { 'D','L', 'R', 'U'};
int dir[4][2] = {
{1, 0},
{0, -1},
{0, 1},
{-1, 0}
};
for (int i = 0; i < 4; i++) {
int nx = x + dir[i][0];
int ny = y + dir[i][1];
if (nx > -1 && nx < 30 && ny > -1 &&
ny < 50 && data[nx][ny] == '0' && visit[nx][ny] == 0) {
temp = new Node(nx, ny, path + ch[i]);
pro->push(temp);
visit[x][y] = 1;
}
}
}
}