[Offer收割]编程练习赛41 register

Ended

Participants:163

Verdict:Wrong Answer
Score:0 / 100
Submitted:2017-12-24 14:28:54

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#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;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX