作业介绍

#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 小时