当前位置: 首页 > 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/a/316524.html

相关文章:

  • Idea导入Springboot项目,无法正确加载yml文件,且不为绿色图标的解决办法
  • 【时间之外】IT人求职和创业应知【74】-运维机器人
  • 企业数字化转型中的“烟囱效应”:从小烟囱到大烟囱的折中之道
  • ajax中get和post的区别,datatype返回的数据类型有哪些?web开发中数据提交的几种方式,有什么区别。
  • 用C#(.NET8)开发一个NTP(SNTP)服务
  • 如何解决 ‘adb‘ 不是内部或外部命令,也不是可运行的程序或批处理文件的问题
  • 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的使用与详解