LCS模板

来源:互联网 发布:淘宝爆款软件 编辑:程序博客网 时间:2024/06/15 15:20

求最长公共子序列

注意最长公共字串与最长公共子序列的区别
子串:是串连续的一部分;
子序列:不改变序列的顺序,而从序列中去掉任意元素而获得的新序列;
如字符串acdfg与akdfc的最长公共子串为df,而最长公共子序列为adf.

#include<stdio.h>#include<string.h>#define max(a,b) (a>b?a:b)char s1[1010],s2[1010];int dp[1010][1010];int main(){    while(scanf("%s%s",&s1,&s2)!=EOF)    {        memset(dp,0,sizeof(dp));        int len1=strlen(s1);        int len2=strlen(s2);        for(int i=1;i<=len1;i++)        {            for(int j=1;j<=len2;j++)            {                if(s1[i-1]==s2[j-1])                dp[i][j]=dp[i-1][j-1]+1;                else                dp[i][j]=max(dp[i-1][j],dp[i][j-1]);            }        }        printf("%d\n",dp[len1][len2]);    }    return 0;}
0 0
原创粉丝点击