《动态规划》hdoj 1159 最长公共子序列

#include<stdio.h>
#include<string.h>
int dp[1005][1005];
    char a[1005],b[1005];
int max(int x,int y)
{
    if(x>y)
        return x;
    else
        return y;
}
int main()
{
    int i,j,lena,lenb;
    while(scanf("%s%s",a,b)!=EOF)
    {
        lena=strlen(a);
        lenb=strlen(b);
        for(i=0;i<=lena;i++)
            dp[0][i]=0;
        for(i=0;i<lena;i++)
        {
            for(j=0;j<lenb;j++)
            {
                if(a[i]==b[j])
                    dp[i+1][j+1]=dp[i][j]+1;
                else
                    dp[i+1][j+1]=max(dp[i][j+1],dp[i+1][j]);
            }
        }
        printf("%d\n",dp[lena][lenb]);
    }
   return 0;
}

你可能感兴趣的:(《动态规划》hdoj 1159 最长公共子序列)