/*
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也有一些限制。
【模板】最长相同子序列
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个字符前可构成的最长...
无人机通信电台--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)...
最长公共子序列(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
Agent测试框架Harbor指南
Harbor是一个AI Agent单元测试框架,用于自动化测试AI代理在容器环境中的任务执行能力。它支持18+种AI代理,通过沙箱隔离和自动验证机制评估任务完成情况。任务必须具有可编程验证的输出结果,适合代码、数据、系统等可量化任务,不适合创意写作等主观任务。Harbor采用CLI操作方式,核心架构包含Job管理、Trial执行和验证器三个层级,执行流程包括环境启动、Agent执行和结果验证。任务目录包含指令文件、配置文件、Docker环境定义和测试脚本等必需组件,通过测试脚本自动判断任务完成质量。
大疆2025八月份校招硬件工程师笔试真题A卷题目分享
大疆2025年笔试真题解析
LCS算法
<br /><br />首先将要看到如何运用动态编程查找两个 DNA 序列的最长公共子序列(longest common subsequence,LCS)。发现了新的基因序列的生物学家通常想知道该基因序列与其他哪个序列最相似。查找 LCS 是计算两个序列相似程度的一种方法:LCS 越长,两个序列越相似。<br />子序列中的字符与子字符串中的字符不同,它们不需要是连续的。例如,ACE 是 ABCDE 的子序列,但不是它的子字符串。请看下面两个 DNA 序列:S1 = DE>GCCCTAGCGDE>S2 =
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
LCS—记录,回溯输出最长公共子序列
输入 第1行:字符串A 第2行:字符串B (A,B的长度 输出 输出最长的子序列,如果有多个,随意输出1个。 输入示例 abcicba abdkscab 输出示例 abca 这一题是51nod教程上面的题。 在lcs里面更多的是求最长公共子序列的长度。这里是要求输出最长
【vsomeip3 教程】SOME/IP中间件去抖策略全解析
本文探讨了在SOME/IP中间件中实现Debounce(去抖动)机制的必要性和实现原理。文章首先分析了中间件层进行Debounce的四大动机:多订阅者共享收益、语义显式化、协议噪声屏蔽和入口处背压控制。接着详细阐述了Debounce的底层原理,包括变化检测机制(ignore和mask的应用)、时间门控策略(interval的两种时间基准)以及超时补发机制,并通过表格清晰展示了不同参数组合的效果和适用场景。最后,文章提出了工程落地的具体方法,包括策略选型、ignore/mask的设计方法论以及分层验证调试的实
面向口齿不清者的语音识别新突破:用大模型拯救“听不懂”的声音
面向构音障碍患者的语音识别新突破:大语言模型显著提升识别准确率 国际语音研究团队在Interspeech 2025发表最新成果,通过将大语言模型(LLM)融入语音识别系统,显著改善了对构音障碍(dysarthria)患者语音的识别效果。研究表明: 传统语音识别(如CTC模型)对构音障碍语音的词错误率(WER)高达50-54%,Whisper模型降至38-40%。 引入LLM解码器后,BART模型将WER降至30-32%,而Whisper-Vicuna组合更将WER降低至21-26%。 关键优势:LLM能有效
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
Redhawk:toggle rate从哪来?
redhwak中toggle rate的相关设置
LCS基础模板
我嘞个豆,用AI辅助学算法流畅多了...
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
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...
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]
动态规划入门2(LCS模板)
动态规划——最长公共子序列(LCS)模板 回文字串 编辑距离
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
LCS,LCIS,LIS模板
LIS,LCS,LCIS模板
LCS/LIS/LCIS 模板总结
/************************* LCS/LIS/LCIs模板总结: *************************/ /***************************************************** LCS:最长公共子序列 求长度为 len1 的序列 A 和长度为 len2 的序列 B 的LCS 注意:序列下标从 0 开始 滚动数组写法。
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方此处...
LIS LCS(模板)
LIS:最长上升子序列(Longest Increasing Subsequence),给定n个整数,A1,A2....An,按从左到右的顺序选出尽量多的整数,组成一个上升子序列(子序列:删除0个或多个数,其他数的顺序不变)。时间复杂度:O(n^2)#include<iostream> #include<algorithm> using namespace std; int...
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否则左边上面取最大值 输出路径的时候从最右下开始如果左边相等左移右边相等右移,否则大于左上左上移动记录此时的字...
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];
6万+



被折叠的 条评论
为什么被折叠?



