这个题要求求出所给矩阵中一个最大的正方形矩阵,要求该正方形矩阵每行每列都是回文
思路:
直接暴力~~
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn=301;
int n,m,ans,a[maxn][maxn];
void Search(int x,int y)
{
for(int i=max(ans,2);x+i-1<n&&y+i-1<m;i++)
{
bool is=true;
for(int j=x;j<i+x;j++)
{
int len=i>>1;
for(int k=0;k<len;k++)
if(a[j][y+k]!=a[j][y+i-1-k])
{
is=false;
break;
}
if(!is)
break;
}
if(!is)
continue;
for(int j=y;j<i+y;j++)
{
int len=i>>1;
for(int k=0;k<len;k++)
if(a[x+k][j]!=a[x+i-1-k][j])
{
is=false;
break;
}
if(!is)
break;
}
if(is)
ans=max(ans,i);
}
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
scanf("%d",&a[i][j]);
ans=0;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
Search(i,j);
printf("%d\n",ans);
}
return 0;
}