洛谷 最长公共子序列

news2024/10/6 9:06:10

LCS

题面翻译

题目描述:

给定一个字符串 s s s 和一个字符串 t t t ,输出 s s s t t t 的最长公共子序列。

输入格式:

两行,第一行输入 s s s ,第二行输入 t t t

输出格式:

输出 s s s t t t 的最长公共子序列。如果有多种答案,输出任何一个都可以。

说明/提示:

数据保证 s s s t t t 仅含英文小写字母,并且 s s s t t t 的长度小于等于3000。

题目描述

文字列 $ s $ および $ t $ が与えられます。 $ s $ の部分列かつ $ t $ の部分列であるような文字列のうち、最長のものをひとつ求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

$ s $ $ t $

输出格式

$ s $ の部分列かつ $ t $ の部分列であるような文字列のうち、最長のものをひとつ出力せよ。 答えが複数ある場合、どれを出力してもよい。

样例 #1

样例输入 #1

axyb
abyxb

样例输出 #1

axb

样例 #2

样例输入 #2

aa
xayaz

样例输出 #2

aa

样例 #3

样例输入 #3

a
z

样例输出 #3


样例 #4

样例输入 #4

abracadabra
avadakedavra

样例输出 #4

aaadara

提示

注釈

文字列 $ x $ の部分列とは、$ x $ から $ 0 $ 個以上の文字を取り除いた後、残りの文字を元の順序で連結して得られる文字列のことです。

制約

  • $ s $ および $ t $ は英小文字からなる文字列である。
  • $ 1\ \leq\ |s|,\ |t|\ \leq\ 3000 $

Sample Explanation 1

答えは axb または ayb です。 どちらを出力しても正解となります。

Sample Explanation 3

答えは `` (空文字列) です。

思路:LCS其实本质上是进行填表,根据方程进行填表
本题状态转移方程为
在这里插入图片描述
填表完后再从末尾开始遍历,如果是满足条件就存储起来,因为是从后往前,所以输出时要反向输出

代码:

#include <bits/stdc++.h>
using namespace std;
string str1, str2;
int f[3005][3005] = {};
int main()
{
	cin >> str1 >> str2;
	for (int i = 0;i < str1.size();i++)
	{
		for (int j = 0;j < str2.size();j++)
		{
			if (str1[i] == str2[j])
				f[i+1][j+1] = max(f[i][j] + 1, f[i+1][j+1]);
			else
				f[i+1][j+1] = max(f[i][j+1], f[i+1][j]);
		}
	}
	string str3;
	int i = str1.size(), j = str2.size();
	while (f[i][j] > 0)
	{
		if (str1[i-1] == str2[j-1])
		{
			str3 += str1[i-1];
			i--, j--;
		}
		else
		{
			if (f[i][j] == f[i - 1][j])
				i--;
			else
				j--;
		}
	}
	reverse(str3.begin(), str3.end());
	cout << str3;
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/102227.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

程序的动态链接(4):动态链接信息

前言 操作系统在执行动态链接的可执行文件时&#xff0c;会首先加载动态链接器&#xff0c;然后由动态链接器根据保存在可执行文件中的动态链接信息&#xff0c;完成依赖动态库的加载、符号解析以及重定位等工作。这些动态链接信息包括但不限于&#xff1a; 动态链接器路径&a…

联邦调查局和国际执法合作加强打击非法DDS攻击

©网络研究院 美国司法部在12月14日查封了48个出售“booter”或“stresser”服务的域名&#xff0c;这些服务使非技术用户可以轻松、廉价地发起强大的分布式拒绝服务(DDoS)攻击&#xff0c;旨在离线攻击目标。 司法部还指控六名美国男子犯有计算机罪&#xff0c;他们涉嫌…

基于simulink的PV光伏发电MPPT仿真

up目录 一、理论基础 二、核心程序 三、测试结果 一、理论基础 由于人口增加、城市化和工业化&#xff0c;能源需求与日俱增&#xff0c;可再生能源是我们传统能源的替代品&#xff0c;因为传统能源是有限的&#xff0c;而且会过期。 太阳能、风能和水能等清洁能源变得越来越…

老生常谈React的diff算法原理-面试版

第一次发文章 not only&#xff08;虽然&#xff09;版式可能有点烂 but also &#xff08;但是&#xff09;最后赋有手稿研究 finally看完他你有收获 diff算法&#xff1a;对于update的组件&#xff0c;他会将当前组件与该组件在上次更新是对应的Fiber节点比较&#xff0c;将比…

关于2022年国内软件质量调查问卷的一些感悟与收获

&#x1f4cb;前言 1️⃣关于2022年国内软件质量调查主题征文活动 CSDN《2022年国内软件质量调查》正式开启&#xff0c;我们诚邀各位博主&#xff0c;特别是测试领域的各位技术er参与调查&#xff0c;并围绕主题&#xff0c;撰写《我填写“2022年国内软件质量调查问卷”的感想…

刷了一个月面试题,终于拿到了字节跳动的offer

一面 自我介绍项目中的监控&#xff1a;那个监控指标常见的有哪些&#xff1f;微服务涉及到的技术以及需要注意的问题有哪些&#xff1f;注册中心你了解了哪些&#xff1f;consul 的可靠性你了解吗&#xff1f;consul 的机制你有没有具体深入过&#xff1f;有没有和其他的注册…

(二)fiber的基本认识

上一篇文章我们了解了react新老结构的差异以及存在的缺点&#xff0c;其中react的解决方案就是采用fiber架构和添加Schedule模块。 ✍️&#xff1a;Schedule模块的主要工作是任务的调度&#xff0c;负责调度不同优先级任务的执行时机&#xff0c;这个我们后面再讲&#xff0c;…

Ardor公链生态与Jelurida产业区块链布局

Ardor公链 Ardor公链&#xff08;ARDR&#xff09;基于NXT公链&#xff0c;并于2018年1月1日推出了多链架构&#xff0c;旨在克服单链本质上的局限性。根据Ardor平台的白皮书&#xff0c;其主要目标是&#xff1a; 解决最终用户必须拥有作为手续费&#xff08;Gas费&#xff…

FineReport复杂表格软件- 相对层次坐标

1. 概述 相对层次坐标是用来描述目标单元格和当前单元格之间的位置关系的表达式&#xff0c;概念图如下图所示&#xff1a; 说明&#xff1a; 参数 说明 Cellx 表示需要返回结果的单元格 Celly 表示位移时参考的单元格 z 代表相对位移的位置 注&#xff1a;相对后移需要…

【Linux】必须掌握的Linux常见指令分类讲解

目录一.Linux下的文件树二.工作目录切换命令1.ls——显示当前路径下的文件和目录2.pwd——显示当前目录的绝对值路径3.cd——切换至指定目录三.文件目录管理命令1.touch——创建空文件2.tree——树状打印目录3.mkdir——创建目录4.rmdir 和 rm ——删除目录5.cp——拷贝文件或目…

Python编程小白入门技巧,从入门到精通只需一个月。

毫无疑问&#xff0c;Python 是当下最火的编程语言之一。对于许多未曾涉足计算机编程的领域「小白」来说&#xff0c;深入地掌握 Python 看似是一件十分困难的事。其实&#xff0c;只要掌握了科学的学习方法并制定了合理的学习计划&#xff0c;Python 从 入门到精通只需要一个月…

【iOS】接口与API设计

文章目录前言用前缀避免命名空间冲突提供“全能初始化方法”实现description方法尽量使用不可变对象使用清晰而协调的命名方式方法命名类与协议的命名为私有方法名加前缀理解Objective-C错误模型理解NSCopying协议前言 我们在构建程序应用时&#xff0c;如果决定重用代码&…

DPDK 网卡驱动学习

DPDK版本19.02 初始化&#xff1a; /* Launch threads, called at application init(). */ int rte_eal_init(int argc, char **argv) {.../* rte_eal_cpu_init() ->* eal_cpu_core_id()* eal_cpu_socket_id()* 读取/sys/devices/system/[cpu|node]* 设置lcore_con…

考试管理系统

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 模块划分&#xff1a;老师模块、班级模块、学生模块、课程模块、试题模块、试卷模块、 组卷模块、考试模块、答题模块 管…

Python数据分析实战之用户消费行为数据分析

任务1&#xff1a;数据预处理 表格数据资源如下百度网盘&#x1f447; 链接&#xff1a;https://pan.baidu.com/s/1pUYfRIe557v6O9ByB2rhEw 提取码&#xff1a;ovgl import numpy as np import pandas as pd import matplotlib.pyplot as plt # %matplotlib inline # 更改绘…

OrangePi 5 Docker下安装OpenWRT作软路由(同样适用于树莓派等设备)

OrangePi5 Docker下安装OpenWRT作软路由&#xff08;同样适用于树莓派等设备&#xff09; 说明 本文的软路由作为家中的二级路由&#xff0c;用一根网线连接主路由的LAN口和二级路由的WAN口&#xff08;当主路由使用配置类似&#xff09; 如果你想要作为旁路由或中继路由使用…

VUE中render渲染函数(h函数)

vue在绝大多数情况下都推荐使用模板来编写html结构,但是对于一些复杂场景下需要完全的JS编程能力&#xff0c;这个时候我们就可以使用渲染函数 &#xff0c;它比模板更接近编译器 vue在生成真实的DOM之前&#xff0c;会将我们的节点转换成VNode&#xff0c;而VNode组合在一起形…

巡更标签 “ PE29_BLE_XG

在我们日常中有一些场景涉及到打卡&#xff0c;比如一个设备需要维护&#xff0c;需要每天有工作人员到现场进行检查或者维护操作&#xff0c;目前普通的做法是弄个二维码到场扫码或者本子记录&#xff0c;用记录的方式明显太落后&#xff0c;容易导致监管不好操作&#xff0c;…

STM32 51单片机——搭建keil5的开发环境(ARM)

知识点&#xff1a;keil/proteus搭建概述、环境搭建 实训day1——12月19日 目录 1 keil安装 1.1 安装KEIL5 安装包 步骤1&#xff1a; 步骤2&#xff1a; 步骤3&#xff1a; 步骤4&#xff1a; 步骤5&#xff1a; 1.2 添加License 步骤1&#xff1a; 步骤2&#xff…

LabVIEW中忽略特定错误

LabVIEW中忽略特定错误 在LabVIEW中收到错误&#xff0c;但已经确认它不会对我的应用程序产生负面影响。如何忽略或清除此错误&#xff1f; LabVIEW程序因为出现错误而中止&#xff0c;但希望代码在收到此错误后继续。怎样才能做到这一点&#xff1f; 解决方案 忽略错误有三…