没想到这里能做到一道经典的LCS经典的模板问题


//经典的求解两个序列的最长公共子序列的长
//LCSd的经典模版问题
#include <bits/stdc++.h>

using namespace std;
const int maxn = 5000+10;
int dp[maxn][maxn];
string s1, s2;

int main() {
    while (cin>>s1>>s2) {
        if (s1[0]==s2[0]) dp[1][1] = 1;
//         memset(dp,0,sizeof(dp));
        int ans = 0;
        for (int i=1;i<=s1.size();i++) {
            for (int j=1;j<=s2.size();j++) {
                if (s1[i-1]==s2[j-1]) {
                    dp[i][j] = dp[i-1][j-1]+1;
                } else {
                    dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
                }
            }
        }
        cout<<dp[s1.size()][s2.size()]<<endl;
    }
    
    return 0;
}

``
这里的状态又不一样了,只有两个参数的问题