LCS模板

UVa 10635(lcs转lis优化模板)王子和公主 例题27 王子和公主(Prince and Princess, UVa 10635) 有两个长度分别为p+1和q+1的序列, 每个序列中的各个元素互不 相同, 且都是1~n2之间的整数。 两个序列的第一个元素均为1。 求出A和 B的最长公共子序列长度。 【输入格式】 输入的第一行为数据组数T(T≤10) 。 每组数据包含3行, 第一行为3 116个整数n, p, q(2≤n≤250, 阅读详情
/*
LCS

BDCABA
ABCBDAB

dp[1][2] = 1
dp[1][1] = 0
dp[2][1] = 0

//子串:连续
//子序列:可以不连续 
// LCS

dp[i][j]//第一个字符串在第i个字符前且第二个串在第j个字符前可构成的最长子序列的长度 

dp[i][j] = 			0  						i=0 || j=0
				dp[i-1][j-1]+1    		 str1[i]==str2[j]
			max(dp[i-1][j],dp[i][j-1])	 str1[i]!=str2[j]
*/
#include<cstdio>
#include<cstring>
#include<stack>
#include<algorithm>
using namespace std;
int main()
{
	char str1[20];
	char str2[20];
	scanf ("%s %s",str1+1,str2+1);
	str1[0] = str2[0] = '0';
	int l1 = strlen(str1)-1;
	int l2 = strlen(str2)-1;
	int dp[20][20] = {0};//0  						i=0 || j=0
	
	for (int i = 1 ; i <= l1 ; i++)
	{
		for (int j = 1 ; j <= l2 ; j++)
		{
			if (str1[i] == str2[j])//dp[i-1][j-1]+1    		 str1[i]==str2[j]
				dp[i][j] = dp[i-1][j-1] + 1;
			else
				dp[i][j] = max(dp[i-1][j],dp[i][j-1]);//max(dp[i-1][j],dp[i][j-1])	 str1[i]!=str2[j]
		}
	}
	
	//回溯求LCS 
	int pos1 = l1;
	int pos2 = l2;
	stack<char> S;
	while (pos1 > 0 && pos2 > 0)
	{
		if (str1[pos1] == str2[pos2])
		{
			S.push(str1[pos1]);
			pos1--;
			pos2--;
		}
		else if (dp[pos1-1][pos2] > dp[pos1][pos2-1])
			pos1--;
		else
			pos2--;
	}
	while (!S.empty())
	{
		printf ("%c%c",S.top(),(S.size() == 1) ? '\n' : ' ');
		S.pop();
	}
	printf ("%d\n",dp[l1][l2]);
	return 0;
}

回溯算法实验 更好的掌握回溯法这一应用,有利于学生们在以后的学习 立即下载

相关推荐

【物联网】探索NE555:一款经典的集成电路(超详细)

NE555是一种集成电路,其内部结构包括比较器、RS触发器、电压比较器和输出级三个主要功能模块,外部引脚则提供了与其他电路元件进行连接的接口。NE555的设计目的是为了提供一种简单方便的定时器解决方案,它广泛应用于模拟和数字电路中。NE555作为一款经典的集成电路,具备设计简单、易于使用和稳定可靠的特点,在电子领域发展了广泛的应用。从单稳态模式到多稳态模式,再到振荡器模式,NE555可以满足不同的需求,并且可以与其他电路元件灵活组合,扩展其功能。然而,需要注意的是NE555也有一些限制。

Goforyouqp的博客 6万+

【模板】最长相同子序列

1 /* 2 LCS 3 4 BDCABA 5 ABCBDAB 6 7 dp[1][2] = 1 8 dp[1][1] = 0 9 dp[2][1] = 0 10 11 //子串:连续 12 //子序列:可以不连续 13 // LCS 14 15 dp[i][j]//第一个字符串在第i个字符前且第二个串在第j个字符前可构成的最长...

weixin_30274627的博客 197

无人机通信电台--XBee-PRO 900HP (S3B)

XBee PRO S3B也称为XBee-900HP无线模块,它是一款工作在频段900~928MHz之间,基于FHSS跳频技术的远距离无线数传电台核心模块。常用型号如下: 类别 型号 开发套件 XKB9-DMT-UHP XBee-PRO 900HP (S3B) DigiMesh模块,200Kbps,软天线 XBP9B-DMWT-002 XBee-PRO 900HP (S3B)...

low米的博客 4505

最长公共子序列(LCS)——python回溯

输入: 第一行:字符串w1 第二行:字符串w2 w1和w2长度小于等于1000 输出: 输出最长的子序列和它的长度 w1 = "" # 矩阵行,有len(w1)行 w2 = "" # 矩阵列,有len(w2)列 a = [] # 存放一种子序列(w1,w2相同字符在w2中的索引) A = [] # 存放所有的子序列 best_a = [] # 存放最长的子序列 best_len_a = 0 # 最长子序列的长度 # 冲突检测 def conflict(k): global w1, w

New_Teen的博客 1436

Agent测试框架Harbor指南

Harbor是一个AI Agent单元测试框架,用于自动化测试AI代理在容器环境中的任务执行能力。它支持18+种AI代理,通过沙箱隔离和自动验证机制评估任务完成情况。任务必须具有可编程验证的输出结果,适合代码、数据、系统等可量化任务,不适合创意写作等主观任务。Harbor采用CLI操作方式,核心架构包含Job管理、Trial执行和验证器三个层级,执行流程包括环境启动、Agent执行和结果验证。任务目录包含指令文件、配置文件、Docker环境定义和测试脚本等必需组件,通过测试脚本自动判断任务完成质量。

loo_Charles_ool的博客 1410

大疆2025八月份校招硬件工程师笔试真题A卷题目分享

大疆2025年笔试真题解析

weixin_63651698的博客 1569

LCS算法

<br /><br />首先将要看到如何运用动态编程查找两个 DNA 序列的最长公共子序列(longest common subsequence,LCS)。发现了新的基因序列的生物学家通常想知道该基因序列与其他哪个序列最相似。查找 LCS 是计算两个序列相似程度的一种方法:LCS 越长,两个序列越相似。<br />子序列中的字符与子字符串中的字符不同,它们不需要是连续的。例如,ACE 是 ABCDE 的子序列,但不是它的子字符串。请看下面两个 DNA 序列:S1 = DE>GCCCTAGCGDE>S2 = 

leohxj的专栏 2万+

Exposure Fusion

MertensTMO原理详解: 文章:2007年Exposure Fusion 论文链接:http://ntp-0.cs.ucl.ac.uk/staff/j.kautz/publications/exposure_fusion.pdf 论文代码:C版本:https://github.com/JawThrow/ExposureFusion python版本:https://github.com/lzocro/Exposure-Fusion matlab版本:https://github.com/Mericam

大长腿不解释 1655

LCS—记录,回溯输出最长公共子序列

输入 第1行:字符串A 第2行:字符串B (A,B的长度 输出 输出最长的子序列,如果有多个,随意输出1个。 输入示例 abcicba abdkscab 输出示例 abca 这一题是51nod教程上面的题。 在lcs里面更多的是求最长公共子序列的长度。这里是要求输出最长

Chunzhen的博客 4501

【vsomeip3 教程】SOME/IP中间件去抖策略全解析

本文探讨了在SOME/IP中间件中实现Debounce(去抖动)机制的必要性和实现原理。文章首先分析了中间件层进行Debounce的四大动机:多订阅者共享收益、语义显式化、协议噪声屏蔽和入口处背压控制。接着详细阐述了Debounce的底层原理,包括变化检测机制(ignore和mask的应用)、时间门控策略(interval的两种时间基准)以及超时补发机制,并通过表格清晰展示了不同参数组合的效果和适用场景。最后,文章提出了工程落地的具体方法,包括策略选型、ignore/mask的设计方法论以及分层验证调试的实

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 232

面向口齿不清者的语音识别新突破:用大模型拯救“听不懂”的声音

面向构音障碍患者的语音识别新突破:大语言模型显著提升识别准确率 国际语音研究团队在Interspeech 2025发表最新成果,通过将大语言模型(LLM)融入语音识别系统,显著改善了对构音障碍(dysarthria)患者语音的识别效果。研究表明: 传统语音识别(如CTC模型)对构音障碍语音的词错误率(WER)高达50-54%,Whisper模型降至38-40%。 引入LLM解码器后,BART模型将WER降至30-32%,而Whisper-Vicuna组合更将WER降低至21-26%。 关键优势:LLM能有效

帅小柏的博客 272

L - Common Subsequence (LCS以及回溯)

点击打开链接 A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = another sequence Z = is a subsequence of X if there exists a s

d1183的博客 385

Redhawk:toggle rate从哪来?

redhwak中toggle rate的相关设置

m0_61544122的博客 8129

LCS基础模板

我嘞个豆,用AI辅助学算法流畅多了...

weixin_65829986的博客 192

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

POJ 1458 LCS模板

LCS模板 存一个 #include "stdio.h" #include "string.h" int main() { char a[1010],b[1010]; int i,j,Max,dp[1010]; while (scanf("%s",a)!=EOF) { scanf("%s",b); memset(dp,0,s

741

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Coincidence——上交【LCS模板题】

文章目录问题描述知识点实现码前思考实现代码码后思考 问题描述 知识点 LCS、动态规划 实现 码前思考 LCS要注意自己去模拟算法的实现,体会其中的思想!!! 实现代码 //典型的模板题 //数组下标从1开始 #include "bits/stdc++.h" using namespace std; //最长的长度 const int maxn = 110; char A[max...

yc_cy1999的博客 220

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

动态规划解最长公共子序列(LCS)原理及模板

最长公共子序列 LCS 最长公共子序列1.LCS的概念2.LCS的规律最长公共子序列的模板1.动态规划求解LCS模板2. LCS字符串输出(还原) 最长公共子序列 1.LCS的概念 (1)递增 (2)可以连续可以不连续 (3)公共:在S1内,又在S2内 (4)最长:5(acdEH)>4(acdE)… 2.LCS的规律 下列图片来自动态规划解最长公共子序列(LCS)(附详细填表过程) 看了下面6张图,就可以得出上图的结论,从而递推出 if(s1[i-1]==s2[j-1]) dp[i][j]

清风 1374

动态规划入门2(LCS模板)

动态规划——最长公共子序列(LCS)模板 回文字串 编辑距离

ZZZS0516的博客 1433

POJ1458 Common Subsequence LCS模板题

POJ1458 Common Subsequence LCS模板题不说什么了直接上模板DescriptionA subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = < x1, x2, …, xm > another

围巾的ACM博客 537

LCS,LCIS,LIS模板

LIS,LCS,LCIS模板

favomj的博客 315

LCS/LIS/LCIS 模板总结

/************************* LCS/LIS/LCIs模板总结: *************************/ /***************************************************** LCS:最长公共子序列 求长度为 len1 的序列 A 和长度为 len2 的序列 B 的LCS 注意:序列下标从 0 开始 滚动数组写法。

free斩 1552

LuoGu1439 LCS模板

作为特别特别经典的一类序列DP,相信大家都应该了解LCS吧! 那么最基本的n方做法就只简述一下: 设f[i][j]表示第一个序列匹配到了第i位,第二个匹配到了第j位; 转移 f[i][j]=max (f[i-1][j], f[i][j-1]); if (a[i]==b[j]) f[i][j]=max (f[i][j], f[i-1][j-1]+1); 然后 n方此处...

weixin_30326745的博客 164

LIS LCS(模板)

LIS:最长上升子序列(Longest Increasing Subsequence),给定n个整数,A1,A2....An,按从左到右的顺序选出尽量多的整数,组成一个上升子序列(子序列:删除0个或多个数,其他数的顺序不变)。时间复杂度:O(n^2)#include&lt;iostream&gt; #include&lt;algorithm&gt; using namespace std; int...

北里五井的博客 343

LCS以及输出路径模板

记忆 两个for用来寻找LCS,DP是二维的,每一维代表了字符串的长度。 寻找的代码部分 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]); 如果相等左上+1否则左边上面取最大值 输出路径的时候从最右下开始如果左边相等左移右边相等右移,否则大于左上左上移动记录此时的字...

weixin_30819085的博客 240

LCS小模板

#include #include #include using namespace std; #define CLR(a,b) memset(a,b,sizeof(a)) #define INF 0x3f3f3f3f #define LL long long char a[1011]; char b[1011]; int dp[1011][1011]; int d[1011][1011];

wyg1997 492
上一篇: 过山车
下一篇: Java基础之文件的IO流
☞十一
博客等级 码龄9年 8粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值