/*
* UVA_111.cpp
*
* Created on: 2013年10月13日
* Author: Administrator
*/
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
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;
}
(DP6.1.4.1)UVA 111 History Grading(最长递增子序列LIS 的LCS 解法)
最新推荐文章于 2020-04-03 10:46:04 发布
本文提供了一个解决UVA_111问题的C++实现方案,通过记录元素出现的位置并使用动态规划求解最长公共子序列,适用于算法竞赛及动态规划学习。
565

被折叠的 条评论
为什么被折叠?



