解析:因为mn都是小于等于10;可以用枚举法,详见代码:

 

#include<bits/stdc++.h>
using namespace std;
int a[15][15];
int m,n;
int ans=0;
int main() {
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            char ch;
            cin>>ch;
            a[i][j]=ch-'0';
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){//枚举矩阵左上角坐标i,j
            for(int ii=i;ii<=n;ii++){
                for(int jj=j;jj<=m;jj++){//枚举矩阵右下角坐标ii,jj
                    //判断是否为平衡矩阵
                    int cnt=0;//统计有多少个1
                    for(int x=i;x<=ii;x++){
                        for(int y=j;y<=jj;y++){
                            cnt+=a[x][y];
                        }
                    }
                    if (cnt*2==(ii-i+1)*(jj-j+1)){//1占一半,即平衡
                        ans=max(ans,(ii-i+1)*(jj-j+1));
                    }
                }
            }
        }
    }
    cout<<ans<<endl;
    return 0;
}

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐