Uva10066

最长公共子序列

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 using namespace std;
 5 int main()
 6 {
 7     int n,m,a1[105],a2[105],a[105][105],count=0;
 8     while(scanf("%d%d",&n,&m)!=EOF)
 9     {
10         count++;
11         if(n==0&&m==0)
12         break;
13         for(int i=0;i<n;i++)
14         scanf("%d",&a1[i]);
15         for(int i=0;i<m;i++)
16         scanf("%d",&a2[i]);
17         memset(a,0,sizeof(a));
18         for(int i=0;i<n;i++)
19         for(int j=0;j<m;j++)
20         {
21             if(a2[j]==a1[i])
22             a[i+1][j+1]=a[i][j]+1;
23             else
24             a[i+1][j+1]=max(a[i+1][j],a[i][j+1]);
25         }
26         printf("Twin Towers #%d
",count);
27         printf("Number of Tiles : %d

",a[n][m]);
28     }
29     return 0;
30 }
原文地址:https://www.cnblogs.com/Acgsws/p/3200477.html