最长公共子序列
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 }