[cpp]
描述:查找最長子序列問題,前面好幾道都是這樣的題
#include <cstdio>
#include <cstring>
int max(int a,int b)
{
if(a>b) return a;
else return b;
}
int num[110][2],s[110][110];
int main()
{
//freopen("a.txt","r",stdin);
int n,m,flag=1;
while(scanf("%d %d",&n,&m)!=EOF)
{
if(!n&&!m) break;
memset(s,0,sizeof(s));
for(int i=0; i<n; i++) scanf("%d",&num[i][0]);
for(int i=0; i<m; i++) scanf("%d",&num[i][1]);
for(int i=n-1; i>=0; i--)
for(int j=m-1; j>=0; j--)
{
if(num[i][0]==num[j][1]) s[i][j]=s[i+1][j+1]+1;
else s[i][j]=max(max(s[i][j+1],s[i+1][j]),s[i+1][j+1]);
}
printf("Twin Towers #%d\nNumber of Tiles : %d\n\n",flag++,s[0][0]);
}
return 0;
}