C++ 代码
#include <iostream>
#include <cstring>
using namespace std;
const int N = 1e3 + 10;
int n, m, res;
char g[N][N];
int dfs(const int& x, const int& y, const int& u)
{
if (x < 0 || x >= n || y < 0 || y >= m) return 0;
int res = 1;
if (u == 1)
{
if (g[x][y] == '/') res += dfs(x, y - 1, 4);
else res += dfs(x, y + 1, 2);
}
else if (u == 2)
{
if (g[x][y] == '/') res += dfs(x - 1, y, 3);
else res += dfs(x + 1, y, 1);
}
else if (u == 3)
{
if (g[x][y] == '/') res += dfs(x, y + 1, 2);
else res += dfs(x, y - 1, 4);
}
else
{
if (g[x][y] == '/') res += dfs(x + 1, y, 1);
else res += dfs(x - 1, y, 3);
}
return res;
}
int main()
{
cin >> n >> m;
for (int i = 0; i < n; ++ i)
for (int j = 0; j < m; ++ j)
cin >> g[i][j];
for (int i = 0; i < n; ++ i)
{
res = max(res, dfs(i, 0, 2));
res = max(res, dfs(i, m - 1, 4));
}
for (int j = 0; j < m; ++ j)
{
res = max(res, dfs(0, j, 1));
res = max(res, dfs(n - 1, j, 3));
}
cout << res;
return 0;
}