问题描述
  给定两个字符串,寻找这两个字串之间的最长公共子序列。
输入格式
  输入两行,分别包含一个字符串,仅含有小写字母。
输出格式
  最长公共子序列的长度。
样例输入
abcdgh
aedfhb
样例输出
3
样例说明
  最长公共子序列为a,d,h。
数据规模和约定
  字串长度1~1000

思路:

1. dp【i】【j】表示字符串a的前i个字符与字符串b的前j个字符的最长公共子序列和

1)如果a【i】 == b【j】,那么最长公共子序列和可以在前【i-1】【j-1】的基础上+1

2)如果不等于,则取【i-1】【j】与【i】【j-1】的最大值

2. dp【lena】【lenb】即为所求

3. 边界:a的前0个与b的前j个 dp【0】【j】 = 0, a的前i个与b的前0个 dp【i】【0】 = 0

#include <iostream>
#include <cmath>
using namespace std;char a[1005], b[1005];
int dp[1005][1005];int main() {scanf("%s", a+1);scanf("%s", b+1);int lena = strlen(a+1), lenb = strlen(b+1);for(int i = 0; i <= lena; i++) dp[i][0] = 0;for(int i = 0; i <= lenb; i++) dp[0][i] = 0;for(int i = 1; i <= lena; i++){for(int j = 1; j <= lenb; j++){if(a[i] == b[j]){dp[i][j] = dp[i-1][j-1]+1;}else{dp[i][j] = max(dp[i-1][j], dp[i][j-1]);}}}printf("%d", dp[lena][lenb]);return 0;
}

蓝桥杯 ADV-202 算法提高 最长公共子序列相关推荐

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

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

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

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

  3. LCS算法:最长公共子序列

    LCS算法:最长公共子序列定义: 一个序列A任意删除若干个字符得到新序列B,则A叫做B的子序列 两个序列X和Y的公共子序列中,长度最长的那个,定义为X和Y的最长公共子序列 例如: X={A,B,C,B ...

  4. 用动态规划算法实现最长公共子序列问题的算法(java实现)

    用动态规划算法实现最长公共子序列问题的算法 public class longestCommonSubsequence {//构造追踪数组rec,记录子问题来源private static Strin ...

  5. java lcs_Java算法之最长公共子序列问题(LCS)实例分析

    本文实例讲述了Java算法之最长公共子序列问题(LCS).分享给大家供大家参考,具体如下: 问题描述:一个给定序列的子序列是在该序列中删去若干元素后得到的序列.确切地说,若给定序列X= { x1, x ...

  6. 动态规划算法解最长公共子序列LCS问题

    动态规划算法解LCS问题 作者 July 二零一零年十二月三十一日 本文参考:微软面试100题系列V0.1版第19.56题.算法导论.维基百科. 第一部分.什么是动态规划算法 ok,咱们先来了解下什么 ...

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

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

  8. 算法之最长公共子序列(LCS)问题

    算法课上老师留的作业,最长公共子序列LCS(Longest Common Subsequence)问题,首先看到这个问题感觉有点复杂,和最长公共子串不同,公共子序列并不要求元素相邻,看起来只有穷举才能 ...

  9. 算法导论-----最长公共子序列LCS(动态规划)

    目录 一.概念梳理 二.最长公共子序列解决方案 方案1:蛮力搜索策略 方案2:动态规划策略 三.C代码实现 实现1 实现2(空间优化) 一.概念梳理   1. 子序列(subsequence): 一个 ...

最新文章

  1. Perl时间处理函数
  2. 在SAP BW中使用ABAP
  3. 并发环境下HashMap引起的full gc排查
  4. :src 三目运算
  5. foreach ($cc as $key = $item);$item加与不加的区别
  6. JavaEE PO VO BO DTO POJO DAO 整理总结(转)
  7. 【.Net MF网络开发板研究-03】获取雅虎天气(HttpClient示例)
  8. (转)开源的大文件上传组件NeatUpload
  9. 速达软件启示录——记中国一代ERP性价比之王的没落
  10. excel转置怎么操作_excel怎么做日历?使用Excel制作日历的操作方法
  11. 免费谷歌云服务器,极简到手指南
  12. oCPC实践录 | 开篇语
  13. GAMMA初学笔记三
  14. 黑客攻防技术宝典Web实战篇(第二版)_读书笔记(第一章~第三章)
  15. go实现时针分针夹角问题
  16. 网站被黑,通过百度/搜狗等搜索关键词访问跳转到其他网站怎么办?
  17. RT1052 ENET ENET_SendFrame调用 未发送帧
  18. Java_22 字符流与字节流(IO流)③Properties集合、编码表
  19. 用软件查看内存大小和插槽数
  20. 使用 CMake 构建 LLVM

热门文章

  1. 注入dll到一个进程里面
  2. gh0st源码分析与远控的编写(三)
  3. GitLab 自动触发 Jenkins 构建
  4. 看了这个高并发系统架构,才知道我对秒杀的误解有多深
  5. 面试官:为什么 HashMap 的加载因子是0.75?
  6. Java中this()和super()的注意点
  7. 【原创】“三次握手,四次挥手”你真的懂吗?
  8. 【今晚七点半】:白板与开源
  9. 来自技术人的呐喊:回归本心,远离内卷
  10. 争做RTC领域标杆——与华为云副总裁薛浩聊聊我们的视频时代