文章
105
粉丝
69
获赞
117
访问
54.1k
#include<bits/stdc++.h>
using namespace std;
const int N = 110;
char str1[N], str2[N];
int dp[N][N];
int main()
{
//dp[i][j]表示两个串从头开始,直到第一个串的第i位
//和第二个串的第j位最长公共子序列
scanf("%s", str1 + 1);
scanf("%s", str2 + 1);
int n = strlen(str1 + 1), m = strlen(str2 + 1);
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= m; j ++)
{
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
if(str1[i] == str2[j])
dp[i][j] = max(dp[i][j], dp[i - 1][j - 1]+1);
//因为更新,所以++;
}
cout<<dp[n][m];
return 0;
}
登录后发布评论
暂无评论,来抢沙发