(DP6.1.4.1)UVA 111 History Grading(最长递增子序列LIS 的LCS 解法)

2014-11-23 23:55:22 · 作者: · 浏览: 4
/* 
 * UVA_111.cpp 
 * 
 *  Created on: 2013年10月13日 
 *      Author: Administrator 
 */  
  
  
#include   
#include   
#include   
#include   
#include   
  
  
using namespace std;  
  
const int maxn = 25;  
int f[maxn][maxn];  
int st[maxn];  
int ed[maxn];  
  
int main(){  
  
    int n;  
    scanf("%d",&n);  
  
    int i,j;  
    for(i = 1 ; i <= n ; ++i){  
        int a;  
        cin >> a;  
        st[a] = i;  
    }  
  
    while(!cin.eof()){  
        for(i = 1 ; i <= n ; ++i){  
            int a;  
            cin >
> a; ed[a] = i; } if(cin.eof()){ break; } memset(f,0,sizeof(f)); for(i = 1 ; i <= n ; ++i){ for(j = 1 ; j <= n ; ++j){ f[i][j] = max(f[i-1][j],f[i][j-1]); if(st[i] == ed[j]){ f[i][j] = max(f[i][j],f[i-1][j-1] + 1); } } } printf("%d\n",f[n][n]); } return 0; }