嗯确实是LCS最最基础的入门题了。
简直是全裸。
题目概述:
LCS,没啥可说,题目说的十分给面子了。
算法思想:
算法就是 dp[i+1][j+1] = s1[i] == s2[j] ? dp[i][j]+1 : max(dp[i][j+1],dp[i+1][j]);
代码部分:
#include <iostream> #include <string> #include <algorithm> using namespace std; string s1, s2; int dp[201][201]; int main() { while (cin >> s1 >> s2) { int s1_len = s1.size(); int s2_len = s2.size(); for (int i = 0; i < s1_len; i++) { for (int j = 0; j < s2_len; j++) { if (s1[i] == s2[j]) { dp[i + 1][j + 1] = dp[i][j] + 1; } else { dp[i + 1][j + 1] = max(dp[i + 1][j], dp[i][j + 1]); } } } cout << dp[s1_len][s2_len] << endl; } return 0; }