题目链接
该题目和第十届蓝桥杯 试题E:迷宫 一样的写法
答案:DDDDRRURRRRRRDRRRRDDDLDDRDDDDDDDDDDDDRDDRRRURRUURRDDDDRDRRRRRRDRRURRDDDRRRRUURUUUUUUULULLUUUURRRRUULLLUUUULLUUULUURRURRURURRRDDRRRRRDDRRDDLLLDDRRDDRDDLDDDLLDDLLLDLDDDLDDRRRRRRRRRDDDDDDRR
#include<bits/stdc++.h>
#define ll long long
#define MOD 998244353
#define INF 999999999
const int MAX = 505;
const int INFTY = (1 << 21);
using namespace std;
struct node {
int x, y;
string road;
};
node start, end;
int dp[505][505];
char st[505][505];
char dic[4] = {'D', 'L', 'R', 'U'};
int dx[] = {1, 0, 0, -1}, dy[] = {0, -1, 1, 0};
int n, m;
int main() {
while(~scanf("%d %d", &n, &m)) {
bool flag = false;
string sr;
for(int i = 0; i < n; ++i) {
scanf("%s", st[i]);
}
memset(dp, -1, sizeof(dp));
start.x = 0, start.y = 0;
queue<node> que;
que.push(start);
dp[0][0] = 0;
while(!que.empty()) {
start = que.front();
que.pop();
if(start.x == n - 1 && start.y == m - 1) {
cout << dp[n - 1][m - 1] << endl;
cout << start.road << endl;
break;
}
for(int i = 0; i < 4; ++i) {
int tx = dx[i] + start.x;
int ty = dy[i] + start.y;
if(tx >= 0 && tx < n && ty >= 0 && ty < m
&& st[tx][ty] == '0' && dp[tx][ty] == -1) {
dp[tx][ty] = dp[start.x][start.y] + 1;
node e;
e.x = tx, e.y = ty;
e.road = start.road + dic[i];
que.push(e);
}
}
}
}
return 0;
}