POJ 2127

 1 #include <iostream>
 2 #define MAXN 501
 3 using namespace std;
 4 
 5 int a[MAXN],b[MAXN],ans[MAXN];
 6 
 7 int GCIS(int l1, int *a, int l2, int *b);
 8 
 9 int main()
10 {
11     //freopen("acm.acm","r",stdin);
12     int l_1;
13     int l_2;
14     int i;
15     int j;
16     int ans_max;
17 //    cin>>l_1;
18     scanf("%d",&l_1);
19 
20     for(i = 0; i < l_1; ++ i)
21     {
22     //    cin>>a[i];
23         scanf("%d",&a[i]);
24     }
25 
26 //    cin>>l_2;
27     scanf("%d",&l_2);
28     for(i = 0; i < l_2; ++ i)
29     {
30         //cin>>b[i];
31         scanf("%d",&b[i]);
32     }
33 
34     cout<<(ans_max = GCIS(l_1,a,l_2,b) )<<endl;
35 
36     for(i = 0; i < ans_max; ++ i)
37     {
38         cout<<ans[i]<<" ";
39     }
40     cout<<endl;
41 
42 }
43 
44 
45 /////////////////////////////////////
46 //最长公共上升子序列~
47 /////////////////////////////////////
48 int GCIS(int l1, int *a, int l2, int *b)//ans[0...DP[max]-1]为序列,最长公共递增子序列!
49 {
50     int f[MAXN+1][MAXN+1];
51     int DP[MAXN+1];
52     int i,j,k,max; 
53     memset(f,0,sizeof(f));
54     memset(DP,0,sizeof(DP));
55     for (i=1;i<=l1;i++)
56     {
57         k=0;
58         for(int kk = 1;kk <= l2;++ kk)
59         {
60             f[i][kk] = f[i-1][kk];
61         }
62         for (j=1;j<=l2;j++)
63         {
64             if(b[j-1] < a[i-1] && DP[j] > DP[k])
65                 k=j;
66             if(b[j-1]==a[i-1]&&DP[k]+1>DP[j])
67             {
68                 DP[j]=DP[k]+1;
69                 f[i][j]=i*(l2+1)+k; 
70             }    
71         } 
72     }
73     max=0;
74     for(i=1;i<=l2;i++)
75     {
76         if (DP[i]>DP[max])
77         max=i;
78     }
79     i=l1*l2+l1+max; 
80     for(j = DP[max];j > 0;j --)
81     {
82         ans[j-1] = b[i%(l2+1)-1]; 
83         i=f[i/(l2+1)][i%(l2+1)];
84     } 
85     return DP[max];
86 }
87 ///////////////////////////////////////////////////
88 //返回值是子序列的容量,容器为ans[]
89 ///////////////////////////////////////////////////

关注我的公众号,当然,如果你对Java, Scala, Python等技术经验,以及编程日记,感兴趣的话。 

技术网站地址: vmfor.com

原文地址:https://www.cnblogs.com/gavinsp/p/4566671.html