最长重复子数组,最大子序和,最长公共子序列

三种类似动态规划对比

c++ 复制代码
#include<bits/stdc++.h>
using namespace std;
class Solution{
	public:
		int againMax(vector<int>& num1,vector<int>& num2){
			vector<vector<int> > dp(num1.size()+1,vector<int>(num2.size()+1,0));//二维数组初始化为0 
			int result=0;//用来放最大值 
			for(int i=1;i<=num1.size();i++){
				for(int j=1;j<=num2.size();j++){
					if(num1[i-1]==num2[j-1]){
						//每个数组多放一个,第一位为空不动它 
						dp[i][j]=dp[i-1][j-1]+1;
					}
					if(result<dp[i][j]) result=dp[i][j];
				}
			}
			return result;
		}
		int maxSum(vector<int>& num){
			vector<int> dp(num.size());
			dp[0]=num[0];
			//初始化第一个dp就是第一个数组的值,result也是 
			int result=dp[0];
			for(int i=1;i<num.size();i++){
				dp[i]=max(dp[i-1]+num[i],num[i]);
				//状态转移方程,继续加大还是当前这个元素大 
				if(result<dp[i]) result=dp[i];
			}
			return result;
		}
		int maxPub(string s1,string s2){
			vector<vector<int> > dp(s1.size()+1,vector<int>(s2.size()+1,0));//二维数组初始化为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]);
					}
				}
			}
			return dp[s1.size()][s2.size()];
		}
};
int main(){
	Solution solution;
	vector<int> num1;
	vector<int> num2;
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++){
		int n1;
		cin>>n1;
		num1.push_back(n1);
	}
	for(int j=0;j<m;j++){
		int n2;
		cin>>n2;
		num2.push_back(n2);
	}
	int result1=solution.againMax(num1,num2);
	int result2=solution.maxSum(num1);
	cout<<result1<<" "<<result2;
	string s1,s2;
	cin>>s1>>s2;
	cout<<solution.maxPub(s1,s2);
}

欢迎批评指正!

相关推荐
蒙奇D索大18 分钟前
【算法】递归的艺术:从本质思想到递归树,深入剖析算法的性能权衡
经验分享·笔记·算法·改行学it
王哈哈^_^28 分钟前
【数据集+完整源码】水稻病害数据集,yolov8水稻病害检测数据集 6715 张,目标检测水稻识别算法实战训推教程
人工智能·算法·yolo·目标检测·计算机视觉·视觉检测·毕业设计
light_in_hand44 分钟前
内存区域划分——垃圾回收
java·jvm·算法
小安同学iter2 小时前
SQL50+Hot100系列(11.7)
java·算法·leetcode·hot100·sql50
_dindong2 小时前
笔试强训:Week-4
数据结构·c++·笔记·学习·算法·哈希算法·散列表
星释2 小时前
Rust 练习册 :Nucleotide Codons与生物信息学
开发语言·算法·rust
寂静山林2 小时前
UVa 1366 Martian Mining
算法
陌路203 小时前
S12 简单排序算法--冒泡 选择 直接插入 希尔排序
数据结构·算法·排序算法
雾岛—听风3 小时前
P1012 [NOIP 1998 提高组] 拼数
算法
papership4 小时前
【入门级-算法-5、数值处理算法:高精度的乘法】
数据结构·算法