LNACS - VOI10 - Dãy con chung không liền kề dài nhất
Tác giả: hieult
Ngôn ngữ: C++
#include <stdio.h>
//#include <conio.h>
int max(int a,int b)
{
if(a<b)
return b;
return a;
}
main()
{
int a[1001],b[1001],f[1001][1001],m,n;
scanf("%d %d",&m,&n);
for(int i=1;i<=m;i++)
{
scanf("%d",&a[i]);
f[i][0]=0;
}
for(int j=1;j<=n;j++)
{
scanf("%d",&b[j]);
f[0][j]=0;
}
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
if(a[i]==b[j])
f[i][j]=f[i-2][j-2]+1;
else f[i][j]=max(f[i-1][j],f[i][j-1]);
}
printf("%d",f[m][n]);
// getch();
}