Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<cstdio>#include<cstdlib>#include<iostream>#include<cstring>#include<cmath>using namespace std;const int maxn=1010;char c[maxn][maxn];int L[maxn][maxn],H[maxn][maxn];int a[maxn][maxn];int main(){int n,m,i,j,ans=0,pos1,pos2;scanf("%d%d",&n,&m);for(i=1;i<=n;i++) scanf("%s",c[i]+1);for(i=1;i<=n;i++) L[i][1]=1;for(i=1;i<=m;i++) H[1][i]=1;for(i=1;i<=n;i++)for(j=2;j<=m;j++)L[i][j]=c[i][j]==c[i][j-1]?1:L[i][j-1]+1;for(i=1;i<=m;i++)for(j=2;j<=n;j++)H[j][i]=c[j][i]==c[j-1][i]?1:H[j-1][i]+1;for(i=1;i<=n;i++)for(j=1;j<=m;j++){if(i==1||j==1||c[i][j]!=c[i-1][j-1])a[i][j]=1;else {a[i][j]=min(a[i-1][j-1]+1,L[i][j]);a[i][j]=min(a[i][j],H[i][j]);}if(a[i][j]>ans) ans=a[i][j],pos1=i,pos2=j;