当前位置: 首页 > news >正文

刷代码随想录有感(125):动态规划——最长公共子序列

题干:

代码:

class Solution {
public:int longestCommonSubsequence(string text1, string text2) {vector<vector<int>>dp(text1.size() + 1, vector<int>(text2.size() + 1, 0));for(int i = 1; i <= text1.size(); i++){for(int j = 1; j <= text2.size(); j++){if(text1[i - 1] == text2[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[text1.size()][text2.size()];}
};

递推公式:如果相同,则后一个为前一个长度加一;如果不相同(如图c不等于e),情况一:考虑c不考虑e,则变成abc与ac的最长公共子序列,此时为dp[i][j-1]; 情况二:考虑e不考虑c,则变成ace与ab的最长公共子序列,此时为dp[i-1][j]。综上最后dp[i][j]取他们当中最大的一个。

定义:dp[i][[j]为以 i - 1和j - 1为结尾的最长公共子序列长度。

http://www.lryc.cn/news/391619.html

相关文章:

  • Linux和mysql中的基础知识
  • ArcGIS Pro SDK (七)编辑 12 编辑模版
  • 数据结构底层之HashMap(面经篇1)
  • 昇思学习打卡-6-基于MindSpore的GPT2文本摘要
  • 代码随想录算法训练营第2天|LeetCode977,209,59
  • Web前端开发——HTML快速入门
  • 浅谈http协议及常见的面试题
  • LabVIEW自动探头外观检测
  • 搏击与防卫笔记
  • 泰国内部安全行动司令部数据泄露
  • MATLAB算法实战应用案例精讲-【数模应用】分层聚类(附MATLAB、python和R语言代码实现)
  • 九、函数的声明和定义
  • 简洁纯文字类的Typecho主题wenso
  • 安卓请求服务器[根据服务器的内容来更新spinner]
  • c++ 联合(Union)的特性和使用
  • 大白菜U盘启动工具
  • C# 中 IEnumerable 和 IQueryable 接口之间的区别
  • centos安装yum命令及常用yum命令
  • table = collections.defaultdict(list)申请的字典的类型是什么?
  • 【虚拟机】虚拟机网络无法访问问题【已解决】
  • 大数据面试题之Spark(3)
  • 基于 Gunicorn + Flask + Docker 的模型高并发部署
  • CPU通过网络将IP camera的RTSP流(H.264编码或是H.265编码)拉回, 交给GPU解码并显示的处理流程
  • windows@资源管理器中的地址栏@访问共享文件夹的各种方法@管理共享文件夹
  • ffmpeg推流时Unknown encoder ‘libx264‘
  • xmind导入导出支持图片功能源码改造
  • Web应用防火墙用在哪些场景?
  • MySQL高可用(MHA高可用)
  • k8s_如何配置 containerd 使用镜像加速拉取docker.io上的镜像
  • centos7安装宝塔面板