为什么这份代码会MLE呀/fad
我算着数组空间大小不超过100MB呀
#include <bits/stdc++.h>
using namespace std;
int T;
int n,m;
char b[2007][2007];
int dp[2007][2007];
int step[2007][2007];
bool vis[2007][2007];
long long ans=0;
int maxx,maxy;
bool dfs(int x,int y,int fax,int fay)
{
if(vis[x][y]!=0&&dp[x][y]==0)
{
dp[x][y]=step[fax][fay]-step[x][y]+1;
return 0;
}
if(vis[x][y]||dp[x][y]||x<1||x>n||y<1||y>m)
return 1;
step[x][y]=step[fax][fay]+1;
vis[x][y]=1;
bool qwq;
if(b[x][y]=='L')
{
qwq=dfs(x,y-1,x,y);
if(dp[x][y])
qwq=1;
else
dp[x][y]=dp[x][y-1]+qwq;
}
if(b[x][y]=='R')
{
qwq=dfs(x,y+1,x,y);
if(dp[x][y])
qwq=1;
else
dp[x][y]=dp[x][y+1]+qwq;
}
if(b[x][y]=='U')
{
qwq=dfs(x-1,y,x,y);
if(dp[x][y])
qwq=1;
else
dp[x][y]=dp[x-1][y]+qwq;
}
if(b[x][y]=='D')
{
qwq=dfs(x+1,y,x,y);
if(dp[x][y])
qwq=1;
else
dp[x][y]=dp[x+1][y]+qwq;
}
if(ans<dp[x][y])
{
ans=dp[x][y];
maxx=x;
maxy=y;
}
return qwq;
}
int main()
{
scanf("%d",&T);
while(T--)
{
ans=0;
maxx=maxy=0;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i)
scanf("%s",b[i]+1);
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
{
dfs(i,j,0,0);
}
}
printf("%d %d %lld\n",maxx,maxy,ans);
for(int i=0;i<=n+1;++i)
{
for(int j=0;j<=m+1;++j)
{
b[i][j]=step[i][j]=dp[i][j]=vis[i][j]=0;
}
}
}
return 0;
}