站外题求助
  • 板块灌水区
  • 楼主JFY_2208
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/8/1 21:34
  • 上次更新2024/8/2 00:20:10
查看原帖
站外题求助
877497
JFY_2208楼主2024/8/1 21:34

题干:

铺砖的工人来到一个操场,将整个操场按正方形铺砖(整个操场可视为R行C列的矩阵,矩阵的每个元素为一块正方形砖块),正方形砖块有两种,一种为蓝色,另一种为红色。请你写一个程序求出为最大纯色正方形的面积。

数据规模:

40%的数据R,C<=10;
70%的数据R,C<=50;
100%的数据R,C<=200;

20pts代码(全WA):

#include<bits/stdc++.h>
using namespace std;
int r,c,a[205][205];
bool check(int x,int y,int l){
    for(int i=x; i<=x+l-1; i++)
        for(int j=y; j<=y+l+1; j++)
            if(a[i][j]!=a[x][y])
                return 0;
    return 1;
}
int main(){
    cin>>r>>c;
    for(int i=1; i<=r; i++)
        for(int j=1; j<=c; j++)
            scanf("%d",&a[i][j]);
    int maxn=0,l=min(r,c);
    for(int i=1; i<=r; i++)
        for(int j=1; j<=c; j++)
            for(int k=maxn+1; k<=l; k++){
                if(i+k-1<=r && j+k-1<=c && check(i,j,k))
                    maxn=k;
                else
                    break;
            }
    cout<<maxn*maxn;
    return 0;
}
2024/8/1 21:34
加载中...