博客
关于我
C++:算法设计策略之动态规划法
阅读量:718 次
发布时间:2019-03-21

本文共 1199 字,大约阅读时间需要 3 分钟。

最长公共子序列问题

题目描述

给定两个序列X={x₁, x₂, …, xₘ}和Y={y₁, y₂, …, yₙ},目标是找出X和Y的最长公共子序列(LCS)。

输入

输入分为以下几行:

  • 第一行:输入序列X;
  • 第二行:输入序列Y。

注意:输入序列后面添加一个空格字符,以便处理特殊情况。

输出

输出X和Y的最长公共子序列的长度。

实验代码

以下是实现最长公共子序列问题的代码:

#include 
#include
#include
using namespace std;string a, b;int N = 1001;int r[N][N] = {0};int LCS(int la, int lb) { int i, j; // 初始化边界行列 for (i = 1; i <= la; ++i) r[i][0] = 0; for (j = 1; j <= lb; ++j) r[0][j] = 0; //Fill DP table for (i = 1; i <= la; ++i) { for (j = 1; j <= lb; ++j) { if (a[i] == b[j]) { r[i][j] = r[i-1][j-1] + 1; } else { if (r[i-1][j] >= r[i][j-1]) { r[i][j] = r[i-1][j]; } else { r[i][j] = r[i][j-1]; } } } } return r[la][lb];}int main() { // 读取输入 cin >> a >> b; int la = a.length(), lb = b.length(); // 方便处理边界情况 a += ' '; b += ' '; int LCS_length = LCS(la, lb); cout << LCS_length; return 0;}

结论

通过上述方法,我们能够高效地解决最长公共子序列问题。该算法基于动态规划原理,时间复杂度为O(NM),空间复杂度为O(NM)(其中N和M分别为两个序列的长度)。此外,为了确保程序的鲁棒性,代码中增加了对边界情况的处理。

转载地址:http://kozgz.baihongyu.com/

你可能感兴趣的文章
OpenCV_ cv2.imshow()
查看>>
opencv_core.dir/objects.a(vs_version.rc.obj)‘ is incompatible with i386:x86-64 output
查看>>
opencv——图像缩放1(resize)
查看>>
opencv——最简单的视频读取
查看>>
Opencv——模块介绍
查看>>
OpenCV与AI深度学习 | 2024年AI初学者需要掌握的热门技能有哪些?
查看>>
OpenCV与AI深度学习 | CIB-SE-YOLOv8: 优化的YOLOv8, 用于施工现场的安全设备实时检测 !
查看>>
OpenCV与AI深度学习 | CoTracker3:用于卓越点跟踪的最新 AI 模型
查看>>
OpenCV与AI深度学习 | OpenCV中八种不同的目标追踪算法
查看>>
OpenCV与AI深度学习 | OpenCV图像拼接--Stitching detailed使用与参数介绍
查看>>
OpenCV与AI深度学习 | OpenCV如何读取仪表中的指针刻度
查看>>
OpenCV与AI深度学习 | OpenCV常用图像拼接方法(一) :直接拼接
查看>>
OpenCV与AI深度学习 | OpenCV常用图像拼接方法(三):基于特征匹配拼接
查看>>
OpenCV与AI深度学习 | OpenCV常用图像拼接方法(二) :基于模板匹配拼接
查看>>
OpenCV与AI深度学习 | OpenCV常用图像拼接方法(四):基于Stitcher类拼接
查看>>
OpenCV与AI深度学习 | OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测(建议收藏!)
查看>>
OpenCV与AI深度学习 | PaddleOCR 2.9 发布, 正式开源文本图像智能分析利器
查看>>
OpenCV与AI深度学习 | SAM2(Segment Anything Model 2)新一代分割一切大模型介绍与使用(步骤 + 代码)
查看>>
OpenCV与AI深度学习 | T-Rex Label !超震撼 AI 自动标注工具,开箱即用、检测一切
查看>>
OpenCV与AI深度学习 | YOLO11介绍及五大任务推理演示(目标检测,图像分割,图像分类,姿态检测,带方向目标检测)
查看>>