#include<bits/stdc++.h>
#define sz 110
using namespace std;
int lcs[sz][sz];
int s1[sz];
int s2[sz];
int main()
{
int N1,N2,i,j,a,b,test=0;
while(scanf("%d%d",&N1,&N2)==2)
{
if(N1==0 && N2==0)
{
break;
}
for(i=1;i<=N1;i++)
{
scanf("%d",&s1[i]);
}
for(i=1;i<=N2;i++)
{
scanf("%d",&s2[i]);
}
for(i=1;i<=N1;i++)
{
for(j=1;j<=N2;j++)
{
if(s1[i]==s2[j])
{
lcs[i][j]=lcs[i-1][j-1]+1;
}
else
{
a=lcs[i-1][j];
b=lcs[i][j-1];
lcs[i][j]=max(a,b);
}
}
}
printf("Twin Towers #%d\n",++test);
printf("Number of Tiles : %d\n\n",lcs[N1][N2]);
memset(lcs,0,sizeof(lcs));
}
return 0;
}
#define sz 110
using namespace std;
int lcs[sz][sz];
int s1[sz];
int s2[sz];
int main()
{
int N1,N2,i,j,a,b,test=0;
while(scanf("%d%d",&N1,&N2)==2)
{
if(N1==0 && N2==0)
{
break;
}
for(i=1;i<=N1;i++)
{
scanf("%d",&s1[i]);
}
for(i=1;i<=N2;i++)
{
scanf("%d",&s2[i]);
}
for(i=1;i<=N1;i++)
{
for(j=1;j<=N2;j++)
{
if(s1[i]==s2[j])
{
lcs[i][j]=lcs[i-1][j-1]+1;
}
else
{
a=lcs[i-1][j];
b=lcs[i][j-1];
lcs[i][j]=max(a,b);
}
}
}
printf("Twin Towers #%d\n",++test);
printf("Number of Tiles : %d\n\n",lcs[N1][N2]);
memset(lcs,0,sizeof(lcs));
}
return 0;
}
0 comments: (+add yours?)
Post a Comment