#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN = 105;
int A[MAXN];
int B[MAXN];
int n1, n2;
int d[MAXN][MAXN];
void dp()
{
for(int i=1; i<=n1; i++) {
for(int j=1; j<=n2; j++) {
if(A[i] == B[j]) {
d[i][j] = d[i-1][j-1] + 1;
} else {
d[i][j] = max(d[i-1][j] , d[i][j-1]);
}
}
}
}
int main(){
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
#endif
int T=0;
while(scanf("%d%d", &n1, &n2) == 2 && n1 && n2) {
for(int i=1; i<=n1; i++) {
scanf("%d", &A[i]);
}
for(int i=1; i<=n2; i++) {
scanf("%d", &B[i]);
}
dp();
printf("Twin Towers #%d\nNumber of Tiles : %d\n\n", ++T, d[n1][n2]);
}
}
UVa 10066 - The Twin Towers
最新推荐文章于 2016-03-10 22:03:35 发布
