题目描述:

主要思路:
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=1010;
char a[N][N];
int n,m;
int dis[][2]={-1,0,1,0,0,-1,0,1};
int dfs(int x,int y,int w)
{
if(x<1||y<1||x>n||y>m) return 0;
if(a[x][y]=='\\')
w^=2;
else
w^=3;
return dfs(x+dis[w][0],y+dis[w][1],w)+1;
}
int main()
{
std::ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
cin>>a[i][j];
}
int ans=0;
for(int i=1;i<=m;i++)
{
ans=max(ans,dfs(1,i,1));
ans=max(ans,dfs(n,i,0));
}
for(int i=1;i<=n;i++)
{
ans=max(ans,dfs(i,1,3));
ans=max(ans,dfs(i,m,2));
}
cout<<ans<<endl;
return 0;
}