LCS即最长公共子序列问题
解题思路:
LCS就是一个简单的DP,例子1:
字符串a:ABCDEF,长度l1.
字符串b:EBACD,长度l2.
结果:3 BCD
核心思路:
用分割线的方法,一开始分割线在字符串a的首字符的右边,然后内层循环去找和首字符相同的字符,如果找到的话就让当前状态下(即分割线在首字符右边)的字符对应的数量(即是dp【i】【j】)的数量等于左边一个字符对应的数量(即是dp【i】【j-1】)+1,到内层循环遍历完最后一个字符对应的数量(即是dp【i】【j】)就对应了该分割线下的最大数量。最后再让i+1,即分割线向右平移一个单位,重复上面的内容,最后得到的dp【l1】【l2】即是最大的那个相同子序列的数量。如果要找出这个序列是什么,就要用到dfs(深度优先搜索)
核心代码:

for(int i=1; i<=l1; i++)
{for(int j=1; j<=l2; j++){if(x[i-1]==y[j-1])                dp[i][j]=dp[i-1][j-1]+1;                elsedp[i][j]=max(dp[i-1][j],dp[i][j-1]);}
}

完整代码网上有,如下所示:

#include<bits/stdc++.h>
#define max_v 1005
using namespace std;
char x[max_v],y[max_v];
int dp[max_v][max_v];
int l1,l2;
int dfs(int i,int j)
{if(i==-1||j==-1)return 0 ;if(x[i]==y[j])//来自左上角{dfs(i-1,j-1);cout<<x[i]<<" ";//先递归到最后再输出,,这样就是顺序的}else{if(dp[i-1][j]>dp[i][j-1])//来自上面{dfs(i-1,j);}else//来自左边{dfs(i,j-1);}}return 0;
}
int main()
{int t;scanf("%d",&t);getchar();while(t--){scanf("%s",x);scanf("%s",y);int l1=strlen(x);int l2=strlen(y);memset(dp,0,sizeof(dp));for(int i=1; i<=l1; i++){for(int j=1; j<=l2; j++){if(x[i-1]==y[j-1])                dp[i][j]=dp[i-1][j-1]+1;                elsedp[i][j]=max(dp[i-1][j],dp[i][j-1]);}}printf("%d\n",dp[l1][l2]);dfs(l1,l2);cout<<endl;}return 0;
}

LCS最详细题解!!!!!相关推荐

  1. 【寒假每日一题】剪绳子(个人练习)详细题解+推导证明(第六天)

    文章目录 前言 题目 详细题解 写法1 O(nlogn)O(nlogn)O(nlogn) 推导证明 举一反三 总结 前言 今天终于出核酸检测的结果,还好大家都没事,不然怕是要封城了!!! 今天还是寒假 ...

  2. 【寒假每日一题】分巧克力(个人练习)详细题解+推导证明(第八天)附带转载程序员壁纸

    文章目录 前言 题目 详细题解 写法1 O(nlogn)O(nlogn)O(nlogn) 推导证明 举一反三 总结 前言 话说今天开始准备搞一个秋招的GitHub,算是复习一遍了. 今天还是寒假每日一 ...

  3. Unique Snowflakes 详细题解

    Unique Snowflakes Emily the entrepreneur has a cool business idea: packaging and selling snowflakes. ...

  4. CTF-Web小白入门篇超详细——了解CTF-Web基本题型及其解题方法 总结——包含例题的详细题解

    很久之前经过一次比赛的打击,决定不能只是一直盲目的刷基础题,应该加快进度,从各种基本题型开始下手,每种题型都应该去找题目刷一刷,并做好总结.于是我去搜了一些总结的文章,便找到了一篇很好的,觉得看完后有 ...

  5. 2022腾讯前端实习生笔试题与部分详细题解

    2022腾讯前端实习生笔试题与部分详细题解 前言与详细题目和个人题解 一.根据给定深度实现数组的扁平化 二.股票买入卖出收益最大化 欢迎交流和指正 前言与详细题目和个人题解 4月24晚举行的笔试,我做 ...

  6. 【寒假每日一题】十三号星期五(个人练习)详细题解+推导证明(第十三天)

    文章目录 前言 题目 详细题解 写法1 O(n)O(n)O(n) 推导证明 举一反三 总结 前言 这一周的题,真的是很扎实的基础题. 今天的题目是来自usaco training 1.2. 最近在家呆 ...

  7. 【寒假每日一题】数字三角形(个人练习)详细题解+推导证明(第二天)

    文章目录 前言 题目 详细题解 写法1 O ( n 2 ) O(n^2) O(n2) 推导证明 写法2 O ( n 2 ) O(n^2) O(n2) 推导证明 举一反三 总结 前言 昨天真是人生中奇葩 ...

  8. 【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式国赛程序设计试题以及详细题解

    文章目录 原题展示 原题分析 详细题解 LED模块 按键模块 串口 LCD模块 模拟电压读取(ADC) 脉冲输入输出 文章福利 原题展示 原题分析   本届国赛试题主要包含LCD.LED.按键.EEP ...

  9. 【寒假每日一题】棋盘挑战(个人练习)详细题解+推导证明(第十六天)

    文章目录 前言 题目 详细题解 写法1 推导证明 举一反三 总结 前言 今天是经典的深度优先搜索问题,即八皇后问题. 作为经典问题,我发现了一种新的写法,不需要开二维数组即可完成. 题目 给定一个 N ...

最新文章

  1. mac 端口转发方案
  2. Javascript 取小数点后面N位
  3. python【力扣LeetCode算法题库】999-车的可用捕获量(DFS)
  4. 基于前后端分离的Nginx+Tomcat动静分离
  5. 第二章-大数据处理框Hadoop
  6. 版本控制工具——Git常用操作(下)
  7. vue 页面生成pdf并下载 vue页面转PDF
  8. 从 Flink 应用场景出发,了解它的设计思路
  9. 【LeetCode】【HOT】226. 翻转二叉树(递归)
  10. python查找最长的字符串_Python简单实现查找一个字符串中最长不重复子串的方法...
  11. Win10下VB6.0开发之串口通信基础(二)代码功能篇
  12. @data注解_SpringBoot入门实践(七)-Spring-Data-JPA实现数据访问
  13. 以太坊 solidity 函数的完整声明格式
  14. Maven-maven插件(1)添加主类信息到MANIFEST.MF
  15. 元胞自动机(又称细胞自动机)
  16. Camera 数据通路
  17. 如何更改QQ截图的快捷键
  18. unity打靶游戏的制作
  19. Android Studio使用签名打包发布APP(安卓生成apk文件)
  20. MMA-符号学运算的奥妙

热门文章

  1. PLSQl链接数据库配置
  2. Vue之mixins使用
  3. OPPO加码高端,到底能不能打?
  4. 在CLI中打印表格----gotable使用介绍
  5. idea 配置 github
  6. 资深玩家如何通过tiktok月入十万
  7. 你强任你强,我干我本行——Java基础(上)
  8. html tr加样式,Javascript操作table,tr,td和表格CSS样式设置小常识
  9. No @Intercepts annotation was found in interceptor com.example.config.MPConfig$$EnhancerBySpringCGLI
  10. Java设计模式(代理模式)