小杨有一个n行m列的网格图,其中每个格子要么是白色,要么是黑色,对于网格图中的一个子矩形,小杨认为它是平衡的当且仅当其中黑色格子与白色格子数量相同,小杨想知道最大的平衡子矩阵包含了多少个格子?
输入
第一行包含2个正整数n,m,含义如图面所示 之后n行,每行一个长度为m的01串,代表网格图第i行格子的颜色,如果为0,则对应格子为白色,否则为黑色
输出
输出一个整数,代表最大的平衡子矩阵的数量,如果不存在则输出0
样例
输入
4 5 00000 01111 00011 00011
输出
16
提示
样例解释 对于样例1,假设 (i,j) 代表第 i 行第 j 列,最大的平衡子矩形的四个顶点分别为 (1,2),(1,5),(4,2),(4,5)。
数据范围 对于全部数据,保证有 1≤n,m≤10。
———————————————————————————————————————————代码:
#include<bits/stdc++.h>
using namespace std;
int n,m,t=0;
char a[12][12];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=n;i>=1;i--)
for(int j=m;j>=1;j--)
for(int k=1;k+i-1<=n;k++)
for(int l=1;l+j-1<=m;l++)
{
int sum=0,maxx=0;
for(int x=k;x<=k+i-1;x++)
for(int y=l;y<=l+j-1;y++)
{
if(a[x][y]=='0') sum++;
if(a[x][y]=='1') maxx++;
}
if(maxx==sum)
{
int h=i*j;
if(h>t) t=h;
}
}
cout<<t;
return 0;
}