给定俩个字符串,S1S2.....Sn和T1T2......Tn。求出这俩个字符串中最长的公共子序列的长度。字符串S1S2......Sn的子序列指可以表示Si1Si2.......Sim的序列

/*
*最长公共子序列 ,输入俩个序列之后不断检查是否有相同出现
*如果发现字符相同,则在动态记录数组中加 1
*如果数组不相同,则选择记录 a数组减 1最大,或者选择 b数组子序列 减 1最大
*
*/
#include<stdio.h>
#include<string.h>
int N,M;
int dp[100][100];
char a[100],b[100];
int max(int n,int m){
return n>m?n:m;
}
void f(){
for(int i=0;i<N;i++)
for(int j=0;j<M;j++){
if(a[i]==b[j])    dp[i+1][j+1]=dp[i][j]+1;
else
dp[i+1][j+1]=max(dp[i][j+1],dp[i+1][j]);
}
printf("%d",dp[N][M]);
}
int main(){
memset(dp,0,sizeof(dp));
scanf("%d%d",&N,&M);
getchar();
for(int i=0;i<N;i++)
scanf("%c",&a[i]);
getchar();
for(int j=0;j<N;j++){
scanf("%c",&b[j]);
}
f();
return 0;
}/***************************************************/#include<stdio.h>
#include<string.h>
int N,M;
int dp[100][100];
char a[100],b[100];
int max(int n,int m){
return n>m?n:m;
}
int rec(int i,int j){
if(dp[i][j]>=0) return dp[i][j];
int res=0;
if(i==N || j==M)
return 0;
else if(a[i]==b[j]) res=rec(i+1,j+1)+1;  //向后寻找并且 res+1
else
res=max(rec(i+1,j),rec(i,j+1));        //背包的核心 ,前面的最大倒推回来之后一定是当前的最大
return dp[i][j]=res;
}
int main(){
memset(dp,-1,sizeof(dp));
scanf("%d%d",&N,&M);
getchar();
scanf("%s",a);
getchar();
scanf("%s",b);
printf("%d\n",rec(0,0));
return 0;
}

转载于:https://www.cnblogs.com/sky-z/p/4411043.html

蓝桥杯 最长公共子序列相关推荐

  1. 蓝桥杯 ADV-202 算法提高 最长公共子序列

    问题描述 给定两个字符串,寻找这两个字串之间的最长公共子序列. 输入格式 输入两行,分别包含一个字符串,仅含有小写字母. 输出格式 最长公共子序列的长度. 样例输入 abcdgh aedfhb 样例输 ...

  2. [Java] 蓝桥杯ADV-202 算法提高 最长公共子序列

    问题描述 给定两个字符串,寻找这两个字串之间的最长公共子序列. 输入格式 输入两行,分别包含一个字符串,仅含有小写字母. 输出格式 最长公共子序列的长度. 样例输入 abcdgh aedfhb 样例输 ...

  3. 蓝桥杯 ADV-202算法提高 最长公共子序列(动态规划)

    问题描述 给定两个字符串,寻找这两个字串之间的最长公共子序列. 输入格式 输入两行,分别包含一个字符串,仅含有小写字母. 输出格式 最长公共子序列的长度. 样例输入 abcdgh aedfhb 样例输 ...

  4. 2017蓝桥杯B组:最长公共子序列(动态规划详解(配图))

    最大公共子串长度问题就是: 求两个串的所有子串中能够匹配上的最大长度是多少. 比如:"abcdkkk" 和"baabcdadabc", 可以找到的最长的公共子串 ...

  5. 经典算法题——最长公共子序列

    ** 解析: ** 此题一共有两个要点: 1.求上述两个最长公共子序列的长度 2.求所有可能出现的最长公共子序列个数,答案可能很大,只要将答案对10^8求余即可 第一个都很好想到,难点在于第二个.下面 ...

  6. 最长公共子序列(LCS)问题 Longest Common Subsequence 与最长公告字串 longest common substr...

    问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X="x0,x1,-,xm-1",序列Y=& ...

  7. 【动态规划】最长公共子序列与最长公共子串

    1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...

  8. POJ 3080 多个串最长公共子序列

    求多个串最长公共子序列,字典序最小输出.枚举剪枝+kmp.比较简单,我用find直接查找16ms #include<iostream> #include<string> #in ...

  9. java实现最长连续子序列_最长公共子序列 ||

    问题:在 前一篇文章 最长公共子序列 | 的基础上要求将所有的最长公共子序列打印出来,因为最长公共子序列可能不只一种. 难点:输出一个最长公共子序列并不难,难点在于输出所有的最长公共子序列,我们需要在 ...

最新文章

  1. 特斯拉致命车祸最新调查结果发布
  2. 高性能分布式计算与存储系统设计概要(上)(转)
  3. [Xcode 实际操作]六、媒体与动画-(1)使用图形上下文按一定比例缩放图片
  4. java build返回空值_将来与Flutter中的FutureBuilder一起返回null
  5. 50session的销毁会话和超时管理
  6. 自定义类型详解:结构体(内存对齐、位段) + 枚举 + 联合
  7. 为什么说 Julia 更优于 Python?
  8. 【PAT】2020年秋季考试划水准备贴
  9. lcms质谱仪_液相色谱-质谱联用(lcms)的原理及应用
  10. 第一篇 -- 《每天读一点经济学常识 》 --于台风
  11. 开源项目9GAG源码解析与Material改造(三)
  12. php ppt生成图片不显示,ppt图片在word中不能正常显示,只显示为矩形框的解决方法...
  13. vr全景技术开启智能化vr酒店宣传新模式
  14. vue echarts 地图立体 并设置tooltip属性背景图片
  15. 考研容易考的211大学计算机,考研中比较容易考的211名校,这四个你知道吗?
  16. 墨者mysql注入_SQL注入实战-MySQL-墨者学院
  17. 小红书入驻,小红书商家如何入驻,小红书入驻需要的细节
  18. 下载风云二号卫星总云量数据
  19. kingpin_parser.go
  20. 掌握了这 10 款开源安全工具,从此系统稳定可靠乐无忧!

热门文章

  1. 【2021年度训练联盟热身训练赛第四场】Happy Number(python)
  2. 【Web安全】XSS简介与XSS测试平台截取用户COOKIE的探索
  3. 基类成员的public访问权限在派生类中变为_C++ 派生类的构造函数(学习笔记:第7章 06)...
  4. 如何网络推广教大家怎样通过提高用户粘性来助力排名提升?
  5. 浅析网站维护优化的必要性!
  6. 如何让网站建设实际效果比之前更好?
  7. 商城网站前期功能设置这几项绝不能少!
  8. 浅析新站SEO和老站优化推广有哪些区别?
  9. Linux内核链表交换节点,[笔记]Linux内核链表:结点的插入、删除以及链表的遍历...
  10. 某同学配置了一台计算机,第六章 计算机硬件系统作业答案.doc