其实,我当时考虑多了,并不是什么图论……(呜呜),DFS也不会TLE……
#include<bits/stdc++.h>
using namespace std;
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
char Map[1010][1010];
int n, m, ans;
void dfs(int f, int x, int y, int a) {
ans = max(ans, a);
int fx = 0;
if(Map[x][y] == '/') fx = f ^ 1;
else fx = f ^ 3;
int xx = x + dx[fx], yy = y + dy[fx];
if(xx >= 1 && xx <= n && yy >= 1 && yy <= m) dfs(fx, xx, yy, a + 1);
}
int main(){
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i++) cin >> (Map[i] + 1);
for(int i = 1; i <= m; i++) dfs(2, 1, i, 1), dfs(0, n, i, 1);
for(int i = 1; i <= n; i++) dfs(1, i, 1, 1), dfs(3, i, m, 1);
printf("%d", ans);
return 0;
}
f^1
和f^3
是什么意思想问下dx和dy是啥意思啊
好的
就是数组啦,存储一下向各个方向走的距离,也就是上下左右
不懂的话AC Chat私信吧
一般用来存储上下左右四个方向i和j所改变的值