ChelseaLi @ 2024-09-03 19:22:57
#include<iostream>
using namespace std;
int w[15][15];
bool check(int d1,int d2,int d3,int d4){
int a[2]={0,0};
for(int i=d1;i<=d3;i++){
for(int j=d2;j<=d4;j++){
a[w[i][j]]++;
}
}
return a[0]==a[1];
}
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
string s;
cin>>s;
for(int j=1;j<=m;j++){
w[i][j]=s[j-1]-'0';
}
}
int answer=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
for(int I=1;I<=n;I++){
for(int J=1;J<=m;J++){
if(check(i,j,I,J)){
answer=max(answer,(I-i+1)*(J-j+1));
}
}
}
}
}
cout<<answer;
return 0;
}
by xkai @ 2024-09-03 19:34:27
I,J 不应该从 1 开始枚举,要分别从 i,j 开始枚举。如果 I<i 或者 J<j check 函数始终会返回 true,此时如果 (I-i+1)*(J-j+1) 为正数就会统计到错误答案。
by ChelseaLi @ 2024-11-29 21:44:25
@xkai谢谢大佬