当前位置: 首页 > news >正文

【晴问算法】提高篇—动态规划专题—最长公共子序列

题目描述

现有两个字符串s1​​​​与s2​,求s1​​​​与s2​​​​的最长公共子序列的长度(子序列可以不连续)。

输入描述

第一行为字符串s1​​,仅由小写字母组成,长度不超过100

第一行为字符串s2​​​,仅由小写字母组成,长度不超过100

输出描述

输出一个整数,表示最长公共子序列的长度。

样例1

输入

sadstory adminsorry

输出

6

解释

最长公共子序列为adsory,长度为6

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 100;
string s;
string t;
int dp[MAXN][MAXN];//记录子问题的解,dp[i][j]表示字符串s的前i个字符和字符串t的前j个字符的最长公共子序列长度
int main(){cin >> s >> t;int ls = s.length();int lt = t.length();for(int i=1;i<=ls;i++)//填表方式,用i和j作为索引访问数组时候从1开始for(int j=1;j<=lt;j++){//两层循环遍历s和t的每个字符,比较是否相等if(s[i-1] == t[j-1]){//第i-1个和第j-1个相等dp[i][j] = dp[i-1][j-1] + 1;//表示当前位置位置的最长公共子序列长度比前一个位置多1}else if(s[i-1] != t[j-1]){//如果字符不相等dp[i][j] = max(dp[i-1][j],dp[i][j-1]);//表示当前位置的最长公共子序列长度与前一个位置保持一致}}}printf("%d",dp[ls][lt]);//即s1和s2的最长公共子序列长度}

 

http://www.lryc.cn/news/320447.html

相关文章:

  • Greetings
  • JS03-函数
  • MySQL | CRUD
  • 【电路笔记】-MOSFET作为开关
  • SpringBoot+Vue项目(Vue3环境搭建 + 基础页面)
  • elementui el-table表格自动循环滚动【超详细图解】
  • 关于学习的一点粗浅见解
  • [java基础揉碎]Object类详解
  • 23.1 微服务理论基础
  • 数据结构-基本概念-001
  • 以题为例浅谈SSRF
  • Java网络编程:探索奥秘与实践
  • Leetcode992-K个不同整数的子数组[两种方法] 关键词 滑窗
  • 【闲聊】-后端框架发展史
  • 界面控件DevExpress ASP.NET Scheduler - 助力快速交付个人信息管理系统(下)
  • 机器学习-04-分类算法-01决策树
  • 探索大数据时代的决策利器:如何有效应对海量数据?
  • Linux 学习笔记(16)
  • 【C语言】打印闰年
  • 外贸入门,很残忍但很真实的外贸真相
  • 【Linux网络编程七】网络序列化和反序列化(网络版本计算器)
  • 算法打卡day17|二叉树篇06|Leetcode 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
  • C语言之数据在计算机内部的存储
  • 程序人生——Java中基本类型使用建议
  • Pikachu 靶场搭建
  • 机器学习-绪论
  • mysql 索引(为什么选择B+ Tree?)
  • 蓝桥杯-带分数
  • 消息队列面试题
  • Android和IOS应用开发-Flutter 应用中实现记录和使用全局状态的几种方法