hdu 4618 Palindrome Sub-Array

第一眼,暴力

第二眼,超时

第三眼,尝试暴力一下吧

第四眼,N*M*T*(N+M),肯定超时

原来是错在第四眼上了T^T

 1 #include<stdio.h>
 2 #include<algorithm>
 3 using namespace std;
 4 
 5 const int MAXN=333;
 6 
 7 int a[MAXN][MAXN];
 8 
 9 int main()
10 {
11     int T,n,m,mi;
12     int i,j,k,x,y;
13     scanf("%d",&T);
14     while(T--)
15     {
16         scanf("%d%d",&n,&m);
17         int p=min(n,m);
18         for(i=0;i<n;i++)
19             for(j=0;j<m;j++)
20                 scanf("%d",&a[i][j]);
21         mi=1;
22         for(i=0;i<n;i++)
23         {
24             for(j=0;j<m;j++)
25             {
26                 //printf("i=%d j=%d
",i,j);
27                 for(k=p;k>=mi+1;k--)
28                 {
29                     //printf("  k=%d
",k);
30                     for(x=0;x<k;x++)
31                     {
32                         for(y=0;y<k/2;y++)
33                         {
34                             //printf("     y1=%d y2=%d
",a[i+x][j+y],a[i+x][j+k-1-y]);
35                             if(a[i+x][j+y]!=a[i+x][j+k-1-y])
36                                 break;
37                         }
38                         if(y<k/2)
39                             break;
40                     }
41                     if(x<k)
42                         continue;
43                     for(y=0;y<k;y++)
44                     {
45                         for(x=0;x<k/2;x++)
46                         {
47                             if(a[i+x][j+y]!=a[i+x][j+k-1-y])
48                                 break;
49                         }
50                         if(x<k/2)
51                             break;
52                     }
53                     if(y<k)
54                         continue;
55                     mi=k;
56                 }
57             }
58         }
59         printf("%d
",mi);
60     }
61     return 0;
62 }
View Code
原文地址:https://www.cnblogs.com/zstu-abc/p/3224000.html