算法练习-NOJ-1041-最长公共子序列

来源:互联网 发布:mysql显示前10行 编辑:程序博客网 时间:2024/06/06 07:20

时限:1000ms 内存限制:200000K 总时限:3000ms

描述
一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X=

#include<stdio.h>#include<string.h>int lcs_length(char x[], char y[]);int main(){    char x[500],y[500];    int len;        scanf("%s%s",x,y);        len=lcs_length(x,y);        printf("%d\n",len);}int lcs_length(char x[], char y[] ){    int m,n,i,j,l[500][500];    m=strlen(x);    n=strlen(y);    for(i=0;i<m+1;i++)        l[i][0]=0;    for(j=0;j<n+1;j++)        l[0][j]=0;    for(i=1;i<=m;i++)        for(j=1;j<=n;j++)            if(x[i-1]==y[j-1])     //i,j从1开始,但字符串是从0开始                l[i][j]=l[i-1][j-1]+1;            else if(l[i][j-1]>l[i-1][j])                l[i][j]=l[i][j-1];            else                l[i][j]=l[i-1][j];    return l[m][n];}
0 0