美文网首页
子序列问题

子序列问题

作者: 影踪派熊猫人武僧 | 来源:发表于2018-11-06 16:55 被阅读0次

最长公共子序列

#include<bits/stdc++.h>
using namespace std;
int dp[200][200];
int lena,lenb,n;
int a[200],b[200];
int main(){
    cin>>n;
    for(register int i=1;i<=n;i++)cin>>a[i];
    for(register int i=1;i<=n;i++)cin>>b[i];
    lena=n;lenb=n;
    for(register int i=1;i<=lena;i++){
        for(register 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]);
        }
    }
    cout<<dp[lena][lenb];
    return 0;
}

最长上升/下降/不升/不降子序列

#include<bits/stdc++.h>
using namespace std;
int n;
int a[maxn],g[maxn],f[maxn];
int main(){
    cin>>n;
    for(register int i=1;i<=n;i++)cin>>a[i];
    for(register int i=1;i<=n;i++)g[i]=0x3f3f3f3f,f[i]=0;
    int ans=0;
    for(register int i=1;i<=n;i++){
        f[i]=lower_bound(g+1,g+1+ans,a[i])-g;
        g[f[i]]=a[i];
        ans=max(f[i],ans);
    }
    cout<<ans<<endl;
    return 0;
}

相关文章

  • 算法(04)动态规划

    零钱问题 背包问题 最长公共子序列 最长公共子串 最长上升子序列 最大连续子序列和

  • 子序列问题

    最长公共子序列 最长上升/下降/不升/不降子序列

  • 子序列问题

    本篇讲解四道子序列相关题目 1. 最长摆动子序列(No. 376) 题目 摆动序列是指相邻数字的差正负交替(不包括...

  • 子序列问题

    判断序列S是否是序列T的子序列 解析:典型的双指针问题 Code

  • 子序列问题

    一些子序列问题 (持续补充) 最长上升子序列 题目 dp数组,每一个数组记录前面最长的上升序列长度。 和标程对比 ...

  • 最长公共子序列问题解析

    问题解读 最长公共子序列问题,就是找出两个字符串中,存在的最长的子序列 什么是子序列呢?子序列不同于公共子串,子串...

  • 动态规划常见面试题

    子序列类型编辑距离 最长递增子序列 最大子数组 最长公共子序列 背包问题0-1背包问题 子集背包问题 完全背包问题...

  • 算法思想之动态规划(六)——最长上升子序列问题

    前言 今天我们继续讨论经典的动态规划问题之最长上升子序列问题。 最长上升子序列问题 问题描述 给定一个数字序列A,...

  • 动态规划之"最大连续子序列"

    最大连续子序列问题 问题定义: 给定K个整数的序列{ N1, N2, ..., Nk },其任意连续子序列可表示为...

  • 最长公共子序列问题

    问题描述: 求两个字符序列的公共最长子序列。 最长公共子串 在回到子序列问题之前,先来了解一下子串的问题。例如,H...

网友评论

      本文标题:子序列问题

      本文链接:https://www.haomeiwen.com/subject/mibuxqtx.html