uva 10066 lcs 水题

2015-11-21 01:03:42 · 作者: · 浏览: 5
#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include
           #include 
           
             #define INF 100000000 using namespace std; int a[1005]; int b[1005]; int dp[1005][1005]; int main(){ int n,m; int k = 1; while(cin >> n >> m,n||m){ for(int i = 0;i < n;i++){ scanf("%d",&a[i]); } for(int i = 0;i < m;i++){ scanf("%d",&b[i]); } //memset(dp,0,sizeof(dp)); for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ if(a[i] == b[j]){ dp[i+1][j+1] = dp[i][j]+1; } else{ dp[i+1][j+1] = max(dp[i+1][j],dp[i][j+1]); } } } printf("Twin Towers #%d\n",k++); printf("Number of Tiles: %d\n\n",dp[n][m]); } return 0; }