杭电的1505最大矩形问题题,我怎么AC不过啊!!
Sample Input2
5 6
R F F F F F
F F F F F F
R R R F F F
F F F F F F
F F F F F F
5 5
R R R R R
R R R R R
R R R R R
R R R R R
R R R R R
Sample Output
45
0
求最大的F的矩形,再在最大矩形里面的F数乘3,就是最后的结果。。。
我的代码:求解释。。。为什么通不过。。。。
#include<stdio.h>
#include<string.h>
#define T 1010
double map[T][T],max;
int R,M,N,r[T],l[T];
void make_set()
{
int i;
for(i=0;i<=N+1;i++)
{
l[i]=i;
r[i]=i;
}
}
int main()
{
int i,j;
char t;
scanf("%d",&R);
while(R--)
{
scanf("%d%d",&N,&M);
memset(map,0,sizeof(map));
t=getchar(); //接受回车。
for(i=1;i<=N;i++)
{
for(j=1;j<=M;j++)
{
scanf("%c",&t);
if(t=='F') map[i][j]=map[i][j-1]+1;
t=getchar(); //接受空格和回车。
}
}
max=0;
for(i=1;i<=M;i++)
{
make_set();
for(j=1;j<=N;j++)
while( map[j][i]!=0 && map[l[j]-1][i]>=map[j][i])
l[j]=l[l[j]-1];
for(j=N;j>=1;j--)
while( map[j][i]!=0 && map[r[j]+1][i]>=map[j][i] )
r[j]=r[r[j]+1];
for(j=1;j<=N;j++)
max=max>map[j][i]*(r[j]-l[j]+1)?max:map[j][i]*(r[j]-l[j]+1);
}
printf("%.0lf\n",3*max);
}
return 0;
}