#define _CRT_SECURE_NO_WARNINGS #define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING #include #define R 3 #define U 0 #define D 1 #define L 2 using namespace std; int nxt[4][2] = {{0, 1}, {0, -1}, {-1, 0}, {1, 0}}; char mp[20][20]; int n; bool tex(int x, int y) { if (x <= n && x >= 1 && y >= 1 && y <= n) { if (mp[x][y] != '#') return true; else return false; } return false; } void tx(int x, int y) { if (tex(x-1,y)&&mp[x-1][y]=='T') } int main() { scanf("%d", &n); int sx, sy, tx, ty; for (int i = 1; i <= n; i++) { scanf("%s", mp[i]); for (int j = n; j > 0; j--) { mp[i][j] = mp[i][j - 1]; if (mp[i][j] == 'S') { sx = i; sy = j; } if (mp[i][j] == 'T') { tx = i; ty = j; } } } int nx = sx, ny = sy, tohe = R; int wx = sx, wy = sy + 1; while (mp[nx][ny] != 'T') { if (tohe == R) { if (tex(nx + 1, ny + 1) && tex(nx , ny+1) ) { printf("D"); tohe = D; nx = nx + 1; ny = ny + 1; } else if (tex(nx, ny+1)) { printf("D"); nx = nx + 1; } else if (tex(nx-1, ny)) { printf("D"); tohe = U; } else { printf("D"); tohe = L; } } else if (tohe == U) { if (tex(nx - 1, ny + 1) && tex(nx - 1, ny) ) { printf("R"); tohe = D; nx = nx - 1; ny = ny + 1; } else if (tex(nx - 1, ny)) { printf("R"); nx = nx - 1; } else if (tex(nx, ny - 1)) { printf("R"); tohe = L; } else { printf("R"); tohe = D; } } else if (tohe == L) { if (tex(nx - 1, ny - 1) && tex(nx, ny-1) ) { printf("U"); tohe = U; nx = nx - 1; ny = ny - 1; } else if (tex(nx, ny-1)) { printf("U"); ny = ny - 1; } else if (tex(nx+1, ny)) { printf("U"); tohe = D; } else { printf("U"); tohe = R; } } else if (tohe == D) { if (tex(nx + 1, ny - 1) && tex(nx + 1, ny) ) { printf("L"); tohe = L; nx = nx + 1; ny = ny - 1; } else if (tex(nx + 1, ny)) { printf("L"); nx = nx + 1; } else if (tex(nx, ny + 1)) { printf("L"); tohe = R; } else { printf("L"); tohe = U; } } } return 0; }