最长公共子序列(模板 LCSL)
博客:
https://www.cnblogs.com/sasuke-/p/5396843.html
模板
#include<iostream>
#include<cstdio>
#include<cstring>
#define MAXN 1010
using namespace std;
int c[MAXN][MAXN];//保存各个公共子序列的长度
int b[MAXN][MAXN];//记录来源
char s1[MAXN], s2[MAXN];
int len1, len2;
void LCSL()
{
for (int i = 1; i <= len1; ++i)//控制s1序列
{
for (int j = 1; j <= len2; ++j)//控制s2
{
if (s1[i - 1] == s2[j - 1])
{//如果字符相同最长公共子序列+1
c[i][j] = c[i - 1][j - 1] + 1;
b[i][j] = 1; //表示来源自斜对角
}
else
{
if (c[i][j - 1] >= c[i - 1][j])
{
c[i][j] = c[i][j - 1];//继承最相邻原有的最大长度
b[i][j] = 2;//记录来源自左边
}
else
{
c[i][j] = c[i - 1][j];
b[i][j] = 3;
}
}
}
}
}
void print(int i, int j)
{
if (i == 0 || j == 0)return;
if (b[i][j] == 1)
{
print(i - 1, j - 1);
cout << s1[i - 1];
}
else if (b[i][j]==2)
{
print(i, j - 1);
}
else
{
print(i - 1, j);
}
}
int main()
{
cout << "输入s1:" << endl;
cin >> s1;
cout << "输入s2:" << endl;
cin >> s2;
len1 = strlen(s1);
len2 = strlen(s2);
LCSL();
cout << "s1与s2的最长公共子序列为" << c[len1][len2] << endl;
print(len1, len2);
printf("\n");
}
转载于:https://www.cnblogs.com/ALINGMAOMAO/p/9439715.html
最长公共子序列(模板 LCSL)相关推荐
- 最长公共子序列模板(LCS)和LICS模板
递归式: 实例图解: 代码: 1 #include<stdio.h> 2 #include<string.h> 3 const int N=111; 4 int dp[N][N ...
- c语言最长公共子序列,算法设计与分析/动态规划——最长公共子序列LCS及模板...
这位大佬写的对理解DP也很有帮助,我就直接摘抄过来了,代码部分来自我做过的题 一,问题描述 给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence).比如字符 ...
- DP专辑之最长公共子序列及其变形
vijos1111(裸的最长公共子序列) 链接:www.vijos.org/p/1111 题解:好久没有写最长公共子序列了,这题就当是复习了.求出最长公共子序列,然后用两个单词的总长度减去最长公共子序 ...
- 动态规划求解LCS最长公共子序列问题c++
文章目录 求最长公共子序列 最长公共子序列问题 刻画最长公共子序列的特征 递归公式 C++代码 求最长公共子序列长度 打印任意一组最长公共子序列 模板题 求最长公共子序列 最长公共子序列问题 (Lon ...
- 模板 - 最长上升子序列与最长公共子序列
整理的算法模板合集: ACM模板 目录 1.最长上升子序列(LIS) 1.1树状数组优化O(nlogn)O(nlogn)O(nlogn) 2.最长公共子序列(LCS) 2.1转换成LIS优化O(nlo ...
- 最长公共子序列求序列模板提_最长公共子序列
最长公共子序列求序列模板提 Description: 描述: This question has been featured in interview rounds of Amazon, MakeMy ...
- 最长公共子序列 LCS(模板) poj 1458
一.标准模板 #include <iostream> #include <stdio.h> #include <cstring> #include <vect ...
- 最长公共子序列 (LCS) 详解+例题模板(全)
欢迎访问https://blog.csdn.net/lxt_Lucia-- 宇宙第一小仙女\(^o^)/-萌量爆表求带飞=≡Σ((( つ^o^)つ~ dalao们点个关注呗- ------------ ...
- 51NOD 1006 最长公共子序列 Lcs 动态规划 DP 模板题 板子
给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最 ...
最新文章
- 微服务已过时!DDD领域建模与架构设计才是未来!
- SCCM 2012系列之新特性概览一:SCCM 2012安装选项和控制台新界面预览
- Antd组件中单选框、复选框自定义样式的优雅实现
- Vue.js 动态组件 异步组件
- 2020 6-7月 每日花语
- SpringBoot+ElementUI实现多选设置一月中指定几天的属性,SpringBoot中通过反射实现
- 砸4亿美元,GE豪赌的全球最大风力发电机到底多大?
- Android 中英文语言切换
- Node.js 应用故障排查手册 —— 大纲与常规问题指标简介
- python怎么改变字体大小_python IDLE 背景以及字体大小的修改方法
- 406.根据身高重建队列
- 开源免费录屏软件整理
- 实力验证:金蝶EAS 8.2授权注册 (包含Apusic 9999连接数破解)
- GPS经纬度坐标与XY坐标相互转换的python程序
- matlab求解rl电路,matlab课程设计--RC串联电路与RL并联电路频率响应
- 爱心动画c语言,jquery+html5烂漫爱心表白动画代码分享
- 微信小程序: 开发文档
- 《剑指 Offer》题目汇总
- 《算法笔记》第四章笔记
- 在 Mac 上将 PDF 转换为 Word 的 5 种简单方法