最长公共子序列
时间:2022-04-22
本文章向大家介绍最长公共子序列,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最长公共子序列问题:给定两个序列X={x1,x2,....xm}, Y={y1,y2,yn},找出XY的最长公共子序列
1 最长公共子序列结构
1 xm=yn,则zk = xm = yn,且zk-1是xm-1和yn-1的最长公共子序列
2 xm!=yn,zk!=xm,则Z是xm-1,yn的最长共公共子序列
3 xm!=yn,zk!=yn,则Z是xm,yn-1的最长公共子序列
2 子问题的递归结构
1 xm=yn时,找出xm-1,yn-1的最长公共子序列
2 xm!=yn时,找出xm 和 yn-1 或者 xm-1和yn的最长公共子序列
3 计算最优值
c[i][j]:存储xi,yj的最长公共子序列长度
b[i][j]:记录c[i][j]的值是由哪一个子问题的解得到的
void LCSLength(int m,int n,char* x,int * * c,int * *b){
int i,j;
for(i=1;i<=m;i++)
c[i][0] = 0;
for(i=1;i<=m;i++)
c[o][i] = 0;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++){
if(x[i] == y[j]){
c[i][j] = c[i-1][j-1]; b[i][j]=1;
}
else if(c[i-1][j] >=c[i][j-1]){
c[i][j] = c[i-1][j]; b[i][j] = 2;
}
else{
c[i][j] = c[i][j-1]; b[i][j] = 3;
}
}
}
耗时O(mn);
4 构造最长公共子序列
b[m][n]开始:
值为1:由xm-1,yn-1得到
值为2:由xm-1,yn得到
值为3:由xm,yn-1得到
- JavaScript之将JS代码放在什么位置最合适
- 快速入门系列--TSQL-01基础概念
- 初识javascript
- [原创]x.509证书在WCF中的应用(Web/IIS篇)
- Javascript之Dom学习
- 考试备战系列--软考--01基础架构概念
- HTML技术简介
- 记一次非常愉悦的 Python 使用经历
- Jquery 触发器之treigger()方法简介
- 如何节省 1TB 图片带宽?解密极致图像压缩
- Redis快速入门
- 王者荣耀未来新版本的环境优化计划,人工智能技术将引入
- Jquery遍历数组之$.inArray()方法介绍
- [原创图解]Win2003证书服务配置/客户端(服务端)证书申请/IIS站点SSL设置
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 安全弹出你的移动设备,保护数据安全!
- burpsuite系列
- idea_Maven_setting文件依赖源国内镜像
- Wapiti安装及使用
- 利用burpsuite+sqlmap POST自动化注入详解
- GSoC: GitHub Checks API 项目第一阶段总结
- GoldenEye靶机渗透
- RBash - 受限的Bash绕过
- 【Rust日报】2020-08-10:在 Rust 中存储连续数据
- 用 Docker 打包 Node.js 程序
- 再见! JSP !
- SocketFTP多线程处理
- 面经手册 · 第4篇《HashMap数据插入、查找、删除、遍历,源码分析》
- Xray配合awvs漏洞扫描
- 无聊的MISC题解