Advertisement
juanjo12x

UVA_10066_Twin_Towers

Aug 6th, 2014
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. #include <cstring>
  5. #include <string>
  6. #include <cctype>
  7. #include <stack>
  8. #include <queue>
  9. #include <list>
  10. #include <vector>
  11. #include <map>
  12. #include <set>
  13. #include <sstream>
  14. #include <limits.h>
  15. #include <stdlib.h>
  16. #include <cmath>
  17. #define LL unsigned long long
  18. using namespace std;
  19. int n1,n2;
  20.  
  21. int cont=1;
  22. int main() {
  23.  
  24. int lcs[110][110];int X[110];int Y[110];
  25.     while(scanf("%d %d",&n1,&n2)){
  26.  
  27.         if(n1==0 && n2==0) break;
  28.  
  29.  
  30.         for(int i=0;i<n1;i++) scanf("%d",&X[i]);
  31.         for(int i=0;i<n2;i++) scanf("%d",&Y[i]);
  32.         for(int i=1;i<=n1;i++){
  33.             lcs[i][0]=0;
  34.         }
  35.         for(int i=0;i<=n2;i++){
  36.             lcs[0][i]=0;
  37.         }
  38.  
  39.  
  40.         for(int i=1;i<=n1;i++){
  41.             for(int j=1;j<=n2;j++){
  42.                 if(X[i-1]==Y[j-1]){
  43.                     lcs[i][j]=1+lcs[i-1][j-1];
  44.                 }else lcs[i][j]=max(lcs[i-1][j],lcs[i][j-1]);
  45.             }
  46.         }
  47.  
  48.  
  49.         printf("Twin Towers #%d\n",cont);cont++;
  50.         printf("Number of Tiles : %d\n",lcs[n1][n2]);
  51.         printf("\n");
  52.     }
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement