1. 程式人生 > >小樂樂匹配字串 (最長公共子序列)

小樂樂匹配字串 (最長公共子序列)

連結:https://ac.nowcoder.com/acm/contest/301/E
來源:牛客網
 

小樂樂匹配字串

時間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 32768K,其他語言65536K
64bit IO Format: %lld

題目描述

小樂樂有字串str1,str2。

小樂樂想要給他們找朋友。

小樂樂想知道在這兩個字串中最多能匹配出多長的相同子串(可非連續)。

輸入描述:

第一行輸入字串str1;

第二行輸入字串str2;

資料保證字串長度小於1000,且非空,字串僅由小寫字母組成。

輸出描述:

輸出最長相同子串的長度。

示例1

輸入

複製

asd
ad

輸出

複製

2
#include <bits/stdc++.h>
using namespace std;
char a[1005],b[1005];
int dp[1005][1005];
int main()
{
    while(~scanf("%s%s",a,b)) {
        memset(dp,0,sizeof(dp));
        int len1=strlen(a), len2=strlen(b);
        for(int i=1;i<=len1;i++) {
            for(int j=1;j<=len2;j++) {
                if(a[i-1]==b[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;
}