作业介绍
#include<iostream>
using namespace std;
int dp[1005][1005];
// 1、状态定义:dp[i][j]表示 以a的前i个字符 和 b的前j个字符 的最长公共子序列的长度
// 2、状态转移方程:
// dp[i][j] 考虑 字符串a 和 字符串b 最后一个字符的情况
// 3、状态初始化
int main(){
int n, m;
cin>>n>>m;
string a, b;
cin>>a>>b;
// 遍历a
for(int i=1;i<=n;i++){
// 遍历b
for(int j=1;j<=m;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]);
}
}
}
cout<<dp[n][m];
return 0;
}
- 状态
- 已结束
- 题目
- 3
- 开始时间
- 2025-1-18 18:30
- 截止时间
- 2025-1-31 23:59
- 可延期
- 24 小时