DP 最长公共子序列(板子)

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
long long int dp[1001][1001];
int main()
{
    int i,j,m,n;
    char a[100005],b[100005];
    while(scanf("%s%s",a,b)!=EOF)
    {
        n=strlen(a),m=strlen(b);
        for(i=0;i<n;i++)
        {
            for(j=0;j<=m;j++)
            {
                dp[i][j]=0;
            }
        }
        for(i=0;i<n;i++)
        {
            for(j=0;j<m;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("%lld\n",dp[i][j]);

    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41243063/article/details/81382373
今日推荐