这里是AC代码
#include<iostream>
#include<cstring>
using namespace std;
const int N=1010;
char a[N][N];
int l[N][N],r[N][N],h[N][N],ans;
bool flag=0;
int main(){
int n,m; cin>>n>>m;
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
cin>>a[i][j];
if(a[i][j]=='F') flag=1;
h[i][j]=1;
r[i][j]=l[i][j]=j;
}
for(int j=2;j<=m;++j)
if(a[i][j]=='F' && a[i][j-1]=='F') l[i][j]=l[i][j-1];
for(int j=m-1;j>0;--j)
if(a[i][j]=='F' && a[i][j+1]=='F') r[i][j]=r[i][j+1];
}
if(!flag){
cout<<0<<endl;
return 0;
}
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j){
if(i>1 && a[i][j]=='F')
if(a[i-1][j]=='F'){
h[i][j]=h[i-1][j]+1;
l[i][j]=max(l[i][j],l[i-1][j]);
r[i][j]=min(r[i][j],r[i-1][j]);
}
ans=max(ans,(r[i][j]-l[i][j]+1)*h[i][j]);
}
cout<<ans*3<<endl;
return 0;
}
但是如果把输入时对 h 数组的赋值去掉,改为输入前的 memset,样例都过不了,请问是为什么