GESP 2024年6月c++四级编程真题
3.1.1 题面描述 小杨有一个 n行m列的网格图,其中每个格子要么是白色,要么是黑色。3.1.5 样例解释 对于样例1,假设 (i,j) 代表第i行第j列,最大的平衡子矩形的四个顶点分别为 (1,2),(1,5),(4,2),(4,5)。3.1.3 输出格式 输出一个整数,代表最大的平衡子矩形包含格子的数量,如果不存在则输出0。之后 n行,每行一个长度为 m的01串,代表网格图第i行格子的颜色,
·
试题名称:黑白方块
时间限制:1.0 s 内存限制:512.0 MB
3.1.1 题面描述:小杨有一个行
列的网格图,其中每个格子要么是白色,要么是黑色。 对于网格图中的一个子矩形,小杨认为它是平衡的当且仅当其中黑色格子与白色格子数量相同。 小杨想知道最大的平衡子矩形包含了多少个格子。
3.1.2 输入格式:第一行包含两个正整数 ,含义如题面所示。
之后 n行,每行一个长度为的01串,代表网格图第
行格子的颜色,如果为0,则对应格子为白色,否则为黑色。
3.1.3 输出格式:输出一个整数,代表最大的平衡子矩形包含格子的数量,如果不存在则输出。 3.1.4 样例1
4 5
00000
01111
00011
00011
16
3.1.5 样例解释 对于样例1,假设代表第
行第
列,最大的平衡子矩形的四个顶点分别为
。
3.1.6 数据范围 对于全部数据,保证有,
。
#include<bits/stdc++.h>
using namespace std;
const int N = 55;
int w[N][N];
int n,m;
bool check(int xa,int ya,int xb,int yb){
int a[2]={0,0};
for(int i = xa;i<=xb;i++){
for(int j=ya;j<=yb;j++){
a[w[i][j]]++;
}
}
return a[0]==a[1];
}
int main(){
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 ans = 0;
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(check(i,j,ii,jj)){
ans = max(ans,(ii-i+1)*(jj-j+1));
}
}
}
}
}
cout<<ans<<"\n";
return 0;
}
更多推荐
所有评论(0)