题干:
铺砖的工人来到一个操场,将整个操场按正方形铺砖(整个操场可视为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;
}