最长公共子串 动态规划_最长公共子上升序列

最长公共子串 动态规划_最长公共子上升序列原题链接题目描述给定两个字符串str1和str2,输出连个字符串的最长公共子序列。如过最长公共子序列为空,则输出-1。输入描述:输出包括两行,第一行代表字符串str1,第二行代表str2。( 1<= length(str1),length(str2)<= 5000)输出描述:输出一行,代表他们最长公共子序列。如果公共子序列的长度为空,则输出-1。示例1输入1A2C3D4B56B1D23CA45B6A输出123456说明”123456″和“12C4B6”都是最长公共

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

原题链接

题目描述
给定两个字符串str1和str2,输出连个字符串的最长公共子序列。如过最长公共子序列为空,则输出-1。
输入描述:
输出包括两行,第一行代表字符串str1,第二行代表str2。( 1<= length(str1),length(str2)<= 5000)
输出描述:
输出一行,代表他们最长公共子序列。如果公共子序列的长度为空,则输出-1。
示例1
输入

1A2C3D4B56
B1D23CA45B6A

输出

123456

说明
“123456”和“12C4B6”都是最长公共子序列,任意输出一个。
备注:

时间复杂度O(nm)O(n∗m),空间复杂度O(nm)O(n∗m)。(n,m分别表示两个字符串长度)

#include<bits/stdc++.h>
#define x first
#define y second
#define send string::nops
using namespace std;
typedef long long ll;
const int N = 1e4 + 10;
const int M = 3 * N;
const int INF = 0x3f3f3f3f;
typedef pair<int,int> PII;
int f[N][N],path[N][N];//path用来记录dp路径
int main(){ 
   
    string str1,str2;
    cin>>str1>>str2;
    int n = str1.size(),m = str2.size();
    str1.insert(0,1,' ');
    str2.insert(0,1,' ');
// cout<<str1<<endl;
    for(int i = 1;i < str1.size();i ++){ 
   
        for(int j = 1;j < str2.size();j ++){ 
   
            if(str1[i] == str2[j])f[i][j] = f[i - 1][j - 1] + 1,path[i][j] = m * (i - 1) + j - 1;
            else { 
   
                f[i][j] = max(f[i - 1][j],f[i][j - 1]);
                if(f[i - 1][j] > f[i][j - 1])path[i][j] = m * (i - 1) + j;
                else path[i][j] = m * i + j - 1;
            }
        }
    }
    int a = str1.size() - 1,b = str2.size() - 1;
    vector<char>res;
    while(a > 0 && b > 0){ 
   
// cout<<a <<"--"<<b<<endl;
// cout<<f[a][b]<<endl;
// cout<<f[a - 1][b - 1]<<endl;
// cout<<f[a - 1][b]<<endl;
// cout<<f[a][b - 1]<<endl;
        int tt = path[a][b];
        int x = tt / m,y = tt % m;
// cout<<x<<"--"<<y<<endl;
        if(x == a - 1 && y == b - 1 && !(x == 0 && y == 0))res.push_back(str1[a]);
        a = x,b = y;
    }
    reverse(res.begin(),res.end());
    if(res.size() == 0){ 
   
        cout<<-1<<endl;
        return 0;
    }
    for(int i = 0;i < res.size();i ++)cout<<res[i];
    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168923.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • BAPI 记录

    BAPI 记录采购订单BAPI_PO_CREATE1采购订单创建交货单BAPI_OUTB_DELIVERY_CREATE_STO根据凭证类型获取TVAK-VBTYP判断要创建的SO类别不同类别调用不同BAPI创建SOBAPI_SALESORDER_CREATEFROMDAT2创建SO退货BAPI_CUSTOMERRETURN_CREATE创建SO借贷项凭证SD_SALES…

    2022年7月24日
    5
  • git 提交代码常用命令

    git 提交代码常用命令 一、master分支代码提交过程 gitlog 查看git合入的记录    gitpull从服务器重新拉代码,将本地代码更新为服务器上的最新代码 gitstatus查看本地代码状态,是否有待提交的代码  git add.  将本地代码全部提交  gitcommit-m"合入新的PUCCH和小区功率代码"   为本次提交添加注释 …

    2022年6月26日
    39
  • Please upgrade the installed version of powershell to the minimum required version and run the comma…

    Please upgrade the installed version of powershell to the minimum required version and run the comma…

    2021年10月28日
    43
  • 一些有用的网站(长期记录)「建议收藏」

    一些有用的网站(长期记录)「建议收藏」1.PPT超级市场(完全免费的 PPT 模板下载网站)http://ppt.sotary.com/web/wxapp/index.html2.熊猫搜书https://ebook.huzerui.com/3.秘塔写作猫(AI智能写作工具)xiezuocat.com/4.联图云光盘(收录了很多的光盘资料的在线学习网站)http://discx.yuntu.io/5.GitMind完全免费的在线思维导图制作网站https://gitmind.cn/6.简答题(搜题)

    2022年8月18日
    3
  • fastjson把map转json_fastjson转list对象

    fastjson把map转json_fastjson转list对象Stringtest=”jdkalkjda|||djkdla|||djlak”;Stringstr[]=test.split(“\\|\\|\\|”);System.out.println(str.length);HashMapt=newHashMap();HashMapt1=newHashMap();t1.put(“k”,”3″);Objects1=JSONObj…

    2022年10月4日
    0
  • 安装petalinux总是提示paytho_archlinux安装教程

    安装petalinux总是提示paytho_archlinux安装教程参考教程:Confluence1.准备工作:硬件材料:XilinxZCU106套件一套 16G的SD卡一个 网线一根 MicroUSB线一根 HDMI线一根 USB键盘、鼠标各一个软件材料: UbuntuSource:https://www.xilinx.com/member/forms/download/design-license-xef.html?akdm=0&filename=Ubuntu_Source_Release.zip Petalinu

    2022年9月4日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号