Monesyy @ 2024-07-29 22:06:23
#include<bits/stdc++.h>
using namespace std;
int const N=110;
char a[N][N];
int b[N][N],ans[N][N];
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];
}
}
int maxx=0;
for(int l=1;l<=n;l++){
for(int k=1;k<=m;k++){
for(int i=l;i<=n;i++){
for(int j=k;j<=m;j++){
if(a[i][j]=='1') b[l][k]++;
if(2*b[l][k]==(i-l+1)*(j-k+1))
ans[l][k]=max(ans[l][k],(i-l+1)*(j-k+1));
}
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
maxx=max(maxx,ans[i][j]);
}
}
cout<<maxx<<endl;
return 0;
}
by Gavinzhou @ 2024-08-22 18:47:58
#include <iostream>
#include <algorithm>
using namespace std;
char a[20][20];
bool pingheng(int r1,int r2,int l1,int l2){
int cnt1,cnt2;
cnt2=cnt1=0;
for(int i=r1;i<=l1;i++){
for(int j=r2;j<=l2;j++){
if(a[i][j]=='1') cnt1++;
else cnt2++;
}
}
if(cnt1==cnt2) return true;
else return false;
}
int main(){
int n,m,cnt=0;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
int maxn=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
for(int k=i;k<=n;k++){
for(int l=j;l<=m;l++){
if(pingheng(i,j,k,l)){
int count=(k-i+1)*(l-j+1);
maxn=max(maxn,count);
//cout<<i<<' '<<j<<' '<<k<<' '<<l<<' '<<count<<endl;
}
}
}
}
}
cout<<maxn;
return 0;
}
试试我的
by Gavinzhou @ 2024-08-22 18:49:05
暴力可以过,不用前缀优化
by zenglicheng666 @ 2024-08-25 18:21:43
#include<bits/stdc++.h>
using namespace std;
int n,m,ans,tmp;
char mp[20][20];
int cheak(int a,int b,int c,int d){
int cnt=0;
for(int i=a;i<=c;i++)
for(int j=b;j<=d;j++)
if(mp[i][j]=='1')
cnt++;
return 2*cnt==(c-a+1)*(d-b+1);
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>mp[i][j];
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
for(int ii=i;ii<=n;ii++) {
for(int jj=j;jj<=m;jj++) {
if(cheak(i,j,ii,jj)){
ans=max(ans,(ii-i+1)*(jj-j+1));
}
}
}
}
}
cout<<ans<<endl;
return 0;
}
求关 ! ???
by zenglicheng666 @ 2024-08-25 18:22:21
by Monesyy @ 2024-09-19 21:49:07
@Gavinzhou @zenglicheng666 谢谢,已关