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

算法之搜索--最长公共子序列LCS

最长公共子序列(longest common sequence):可以不连续
在这里插入图片描述

最长公共子串(longest common substring):连续
在这里插入图片描述

demo

for (int i = 1;i<=lena;i++){
	for (int j = 1;j<=lenb;j++){
		if(a[i-1]==b[j-1]){
			dp[i][j]=dp[i-1][j-1]+1;
		}else{
			dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
		}
	}
}

Coincidence

题目描述

Time Limit: 1000 ms
Memory Limit: 256 mb
Find a longest common subsequence of two strings.

输入描述:

First and second line of each input case contain two strings of lowercase character a…z. There are no spaces before, inside or after the strings. Lengths of strings do not exceed 100.

输出描述:

For each case, output k – the length of a longest common subsequence in one line.

代码
#include <bits/stdc++.h>
using namespace std;

int dp[105][105];

void LCS(string a,string b){
	int lena = a.length();
	int lenb = b.length();
	for(int i = 1;i<=lena;i++){
		for(int j = 1;j<=lenb;j++){
			if(a[i-1]==b[j-1]){//注意不是i,j
				dp[i][j]=dp[i-1][j-1]+1;
			}else{
				dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
			}
		}
	}
}


int main(){
	string a,b;
	while(cin>>a>>b){
		int lena = a.length();
		int lenb = b.length();
		LCS(a,b);
		cout<<dp[lena][lenb]<<endl;
	}
	return 0;
}

最长公共子序列

题目描述

Time Limit: 1000 ms
Memory Limit: 256 mb
给出两个字符串序列,求最长公共子序列(LCS) 。(改编版,原题规定两字符串长度相等,且无重复元素。)

输入描述:

多组数据输入。
在一行分别输入两个字符串。(字符串长度<=1000)

输出描述:

输出两个字符串的最长公共子序列的长度。

代码
#include <bits/stdc++.h>
using namespace std;

int dp[1005][1005];

void LCS(string a,string b){
	int lena = a.length();
	int lenb = b.length();
	for(int i = 1;i<=lena;i++){
		for(int j = 1;j<=lenb;j++){
			if(a[i-1]==b[j-1]){//注意不是i,j
				dp[i][j]=dp[i-1][j-1]+1;
			}else{
				dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
			}
		}
	}
}

int main(){
	string a,b;
	while(cin>>a>>b){
		int lena = a.length();
		int lenb = b.length();
		LCS(a,b);
		cout<<dp[lena][lenb]<<endl;
	}
	return 0;
}

最长连续公共子序列


http://www.kler.cn/news/316524.html

相关文章:

  • leetcode746. 使用最小花费爬楼梯,动态规划
  • Uniapp低版本的安卓不能用解决办法
  • Qt_窗口界面QMainWindow的介绍
  • Deep Guided Learning for Fast Multi-ExposureImage Fusion
  • 对接空号检测平台可以降低成本吗
  • 动手学深度学习(pytorch)学习记录32-稠密连接网络(DenseNet)[学习记录]
  • Vue | watch监听
  • IDEA Project不显示/缺失文件
  • 手机在网状态查询接口如何用PHP进行调用?
  • AWS 管理控制台
  • Apache APISIX学习(1):介绍、docker启动
  • Java是怎么处理死锁的
  • 006——队列
  • 带线无人机现身俄罗斯抗干扰技术详解
  • HTML5 Video标签的属性、方法和事件汇总,以及常用视频插件推荐
  • 深蓝学院-- 量产自动驾驶中的规划控制算法 小鹏
  • G - Merchant Takahashi / F - Useless for LIS
  • mysql学习教程,从入门到精通,TOP 和MySQL LIMIT 子句(15)
  • 本地连线上Redis访问不通
  • SpringBoot权限认证-Sa-Token的使用与详解
  • C++第十二节课 模板初阶和string引入
  • Apache Flink 流批融合技术介绍
  • 安装vue 试了很多镜像不成功, 最后找到了
  • Sentence Transformers 教程!
  • LeetCode_sql_day28(1767.寻找没有被执行的任务对)
  • STM32 通过软件模拟 I2C 驱动 24Cxx 系列存储器
  • 沙盒的一机两用能否运用在源代码加密方面呢?
  • 随手记:前端一些定位bug的方法
  • java Class类与Field、Method、Constructor类
  • 大数据毕业设计选题推荐-网络电视剧收视率分析系统-Hive-Hadoop-Spark