hdu1159--------------最长公共子序列(模板)
没事敲了个最长公共子序列,按照自己笔记本上模板算法! 先敲了一个递归算法的,敲时就感觉费事儿!一提交,果断超时!无语,..........
还好哥有个非递归模板,敲完一交。31ms! 差距好大啊,以后就用非递归吧!
模板在此
AC:
#include<stdio.h>
#include<string.h>
char a[10001],b[10001];
int c[10001][10001];
int lcs_len(int m,int n)
{
int i,j;
for(i=0;i<=m;i++)
c[i][0]=0;
for(i=0;i<=n;i++)
c[0][i]=0;
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
if(a[i-1]==b[j-1])
c[i][j]=c[i-1][j-1]+1;
else if(c[i-1][j]>=c[i][j-1])
c[i][j]=c[i-1][j];
else
c[i][j]=c[i][j-1];
}
}
return c[m][n];
}
int main()
{
int m,n,k;
while(scanf("%s%s",a,b)!=EOF)
{
m=strlen(a);
n=strlen(b);
printf("%d\n",lcs_len(m,n));
}
return 0;
}