最长公共子序列LCS

最长公共子序列LCS

 

最长公共子序列LCS

 

 

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <algorithm>
 4 
 5 using namespace std;
 6 
 7 int dp[105][105];
 8 
 9 int main() 
10 {
11     string s1, s2;
12     while(cin >> s1 >> s2)
13     {
14         int L1 = s1.length();
15         int L2 = s2.length();    // 依次求得两个字符串的长度 
16         for(int i = 0; i <= L1; ++i) dp[i][0] = 0;
17         for(int j = 0; j <= L2; ++j) dp[0][j] = 0;    // 设初始值为0 
18         for(int i = 1; i <= L1; ++i)
19         {
20             for(int j = 1; j <= L2; ++j)    // 双重循环依次求得每个dp[i][j]的值 
21             {    
22                 if(s1[i-1] == s2[j-1])        // 因为字符串数组下标从0开始,所以第i个字符位置为s1[i-1],若两个字符相等 
23                     dp[i][j] = dp[i-1][j-1] + 1;
24                 else    // 若当前两个字符不相等 
25                     dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
26             }
27         }
28         
29         cout << dp[L1][L2] << endl;
30     } 
31             
32     return 0;
33 }

 

上一篇:洛谷 P1077 摆花 (dfs)


下一篇:Evaluation of CNN-based Single-Image Depth Estimation Methods