me的垃圾代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1e2 + 10;
int n, m, sx, sy, sw, ans = INT_MAX, dis[N][N][100], d[4][2] = {{-1, 0}, {0, -1}, {1, 0}, {0, 1}};
char c[N][N];
void dfs(int x, int y, int w, int s) {
if (dis[x][y][w] <= s || ans <= s){
return;
}
dis[x][y][w] = s;
if (c[x][y] == 'F'){
ans = min(ans, dis[x][y][w]);
}
bool f = 0;
if (c[x + d[w][0]][y + d[w][1]] == '#' || c[x + d[w][0]][y + d[w][1]] == 'F') {
f = 1;
dfs(x + d[w][0], y + d[w][1], w, s);
}
if (c[x + d[(w + 1) % 4][0]][y + d[(w + 1) % 4][1]] == '#' || c[x + d[(w + 1) % 4][0]][y + d[(w + 1) % 4][1]] == 'F') {
f = 1;
dfs(x + d[(w + 1) % 4][0], y + d[(w + 1) % 4][1], (w + 1) % 4, s + 1);
}
if (c[x + d[(w + 3) % 4][0]][y + d[(w + 3) % 4][1]] == '#' || c[x + d[(w + 3) % 4][0]][y + d[(w + 3) % 4][1]] == 'F') {
f = 1;
dfs(x + d[(w + 3) % 4][0], y + d[(w + 3) % 4][1], (w + 3) % 4, s + 5);
}
if (!f && (c[x + d[(w + 2) % 4][0]][y + d[(w + 2) % 4][1]] == '#' || c[x + d[(w + 2) % 4][0]][y + d[(w + 2) % 4][1]] == 'F')) {
dfs(x + d[(w + 2) % 4][0], y + d[(w + 3) % 4][1], (w + 2) % 4, s + 10);
}
}
int main() {
cin >> n >> m;
int x = 0, y = 0, k = 0;
for (int i = 1; i <= n; i++){
for (int j = 1; j <= m; j++) {
cin >> c[i][j];
if (c[i][j] == 'N'){
x = i;
y = j;
k = 0;
}
if (c[i][j] == 'W'){
x = i;
y = j;
k = 1;
}
if (c[i][j] == 'S'){
x = i;
y = j;
k = 2;
}
if (c[i][j] == 'E'){
x = i;
y = j;
k = 3;
}
}
}
for(int i = 0; i <= 50; i++){
for(int j = 0; j <= 50; j++){
for(int z = 0; z <= 5; z++){
dis[i][j][z] = INT_MAX;
}
}
}
dfs(x, y, k, 0);
cout << ans;
return 0;
}
请求巨佬救助 qwq