UVa111

 1 #include<stdio.h>
 2 #include<string.h>
 3 int main()
 4 {
 5     int a[50],b[50],c[50],d[50][50],i,j,n,k,t,maxd;
 6     scanf("%d",&n);
 7     for(i=0;i<n;i++)
 8     {
 9         scanf("%d",&t);
10         c[t-1]=i;
11     }
12     while(scanf("%d",&t)!=EOF)
13     {
14         a[t-1]=0;
15         for(i=1;i<n;i++)
16         {
17             scanf("%d",&t);
18             a[t-1]=i;
19         }
20         for(i=0;i<n;i++)
21         for(j=0;j<n;j++)
22         {
23             if(c[i]==a[j])
24             b[j]=i;
25         }
26         memset(d,0,sizeof(d));
27         maxd=0;
28         for(k=1;k<=n;k++)
29         {
30             for(j=k;j<n;j++)
31             {
32                 if(b[j]>b[k-1]&&d[k-1][j]<d[k-1][k-1]+1)
33                 d[k][j]=d[k-1][k-1]+1;
34                 else
35                 d[k][j]=d[k-1][j];
36                 if(maxd<d[k][j])
37                 maxd=d[k][j];
38             }
39 
40         }
41   /*      for(i=1;i<=n;i++)
42         {
43             for(j=0;j<n;j++)
44             printf("%d ",d[i][j]);
45             printf("\n");
46         }
47         printf("\n");*/
48         printf("%d\n",maxd+1);
49     }
50     return 0;
51 }

 

posted on 2013-07-07 12:32  Ac_国士无双  阅读(190)  评论(0编辑  收藏  举报