小樂樂匹配字串 (最長公共子序列)
阿新 • • 發佈:2018-12-02
連結: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; }