美文网首页
动态规划_最大上升子序列

动态规划_最大上升子序列

作者: tmax | 来源:发表于2018-11-29 19:05 被阅读0次

一个序列有N个数:A[1],A[2],…,A[N],求出最长上升子序列的长度(LIS:longest increasing subsequence)。例如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 5, 9) , (3, 4, 8)等等。这些子序列中最长的长度是4,比如子序列(1, 3, 5, 9) ,(1, 3, 5, 8)和(1, 3, 4, 8).

#include <iostream>

using namespace std;

int daynamic(int* a,int length){
    int *maxCount = new int[length];//maxCount[i]表示以a[i]结尾的的最大上升子序列长度
    for(int i=0; i<length; i++){
        maxCount[i] = 1;
    }
    int max = 1;
    for(int i=1; i<length; i++){
        for(int j=0; j<i ;j++){
            if(a[j]<a[i] && maxCount[j]+1>maxCount[i]){
                maxCount[i] = maxCount[j]+1;
            }
            if(maxCount[i]>max)
                max = maxCount[i];
        }
    }
    delete []maxCount;
    return max;
}

int main()
{
    int a[8] = {3,4,5,9,7,1,2,8};
    int max = daynamic(&a[0], 8);
    cout << max << endl;
    return 0;
}

相关文章

  • LIS

    求最大上升子序列(Longest Increasing Subsequence),动态规划中最基础的题目。 状态:...

  • 动态规划_最大上升子序列

    一个序列有N个数:A[1],A[2],…,A[N],求出最长上升子序列的长度(LIS:longest increa...

  • 动态规划算法

    动态规划算法 最长上升子序列

  • 字符串

    1 最长无重复字符子串 2 最长上升子序列(动态规划) 3 最长公共子序列的长度(动态规划) 4 对于一个字符串,...

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

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

  • LeetCode 300. 最长上升子序列(Longest In

    300. 最长上升子序列 Python3 实现 动态规划 维护子序列+二分查找 GitHub链接:https://...

  • 机试常用算法和题型-动态规划专题

    动态规划专题 最大连续子序列求和 方法二:很巧妙 最大加权子矩阵-矩阵压缩 最长不下降子序列 最长不下降子序列应用...

  • DP经典问题代码

    斐波那契数列 (动态规划的递归写法) 数塔问题 (动态规划的递推写法) 最大连续子序列和 最长不下降子序列 最长公...

  • 2020-03-14 刷题1(动态规划,二分查找)

    300 最长上升子序列 最简单的做法就是动态规划,每个元素维护一个dp值,代表了以它为结尾的最长上升子序列长度(至...

  • 300. Longest Increasing Subseque

    求数组的最长上升子序列的长度。 动态规划 dp[i]为考虑前i个元素,以第 i 个数字结尾的最长上升子序列的长度,...

网友评论

      本文标题:动态规划_最大上升子序列

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