另类题解
2025-08-04 16:24:34
发布于:上海
39阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
char a;
int n,m,q[1010][1010],pre[1010][1010],best,num;
bool fsquare(int sx,int sy,int ex,int ey){
int al=pre[ex][ey]-pre[sx-1][ey]-pre[ex][sy-1]+pre[sx-1][sy-1];
return (al==(ex-sx+1)*(ey-sy+1));
}
void dfs(int sx,int sy,int ex,int ey){
if(!fsquare(sx,sy,ex,ey)){return;}
best=max(best,(ex-sx+1)*(ey-sy+1));
dfs(sx,sy,ex+1,ey);
if(sx==ex){dfs(sx,sy,ex,ey+1);}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a;
if(a=='F'){
q[i][j]=1;
}
pre[i][j]=pre[i-1][j]+pre[i][j-1]-pre[i-1][j-1]+q[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
dfs(i,j,i,j);
}
}
cout<<best*3;
return 0;
}```
全部评论 2
2025-08-04 来自 上海
0orz
6天前 来自 上海
0
WOWOWO
2025-08-04 来自 上海
0
有帮助,赞一个