问题描述:给定数组p,返回p的最长公共递增子序列长度,比如p={ 2,1,5,3,6,4,8,9,7 },最长公共子序列为{1,3,4,8,9},所以返回长度为5.

设dp[i]表示L中以ai为末元素的最长递增子序列的长度。则有如下的递推方程:

这个递推方程的意思是,在求以ai为末元素的最长递增子序列时,找到所有序号在L前面且小于ai的元素aj,即j<i且aj<ai。如果这样的元素存在,那么对所有aj,都有一个以aj为末元素的最长递增子序列的长度dp[i],把其中最大的dp[i]选出来,那么dp[i]就等于最大的dp[i]加上1,即以ai为末元素的最长递增子序列,等于以使dp[i]最大的那个aj为末元素的递增子序列最末再加上ai;如果这样的元素不存在,那么ai自身构成一个长度为1的以ai为末元素的递增子序列。

int lis(int *p,int n){int *dp = new int[n];memset(dp, 0, sizeof(int) * n);dp[0] = 1;for (int i = 1; i < n; i++){dp[i] = 1;for (int j = 0; j < i; j++)if (p[j]<p[i] && dp[j]>dp[i] - 1) dp[i] = dp[j] + 1;}int max = -1;for (int i = 0; i < n; i++)if (dp[i] > max)max = dp[i];return max;
}

动态规划——最长递增子序列相关推荐

  1. 动态规划 —— 最长递增子序列(LIS)

    LIS:Longest Increasing Subseq,最长递增子序列,是不要求该子序列在原始序列中间连续存放的. 为了降低对这一问题的理解难度,既然最长递增子序列不要求子序列位置连续,我们不妨先 ...

  2. 动态规划 - 最长递增子序列LIS

    问题:一个序列有N个数:A[1],A[2],-,A[N],求出最长非降子序列的长度 样例输入:3 1 2 6 5 4 思路: 首先把问题简单化.可以先求A[1],...A[i]的最长非降子序列,令dp ...

  3. 动态规划示例汇总-Java版(组合硬币、跳台阶、最小路径和、最长递增子序列、最长公共子序列、01背包问题、最小编辑代价)

    动态规划算法示例汇总-Java版 组合硬币 Java解题-暴力搜索 Java解题-记忆搜索 Java解题-动态规划(两种写法) 跳台阶 Java解题-暴力递归 Java解题-动态规划 矩阵最小路径和 ...

  4. leetcode(300)—— Longest Increasing Subsequence(最长递增子序列)

    参考 Python 解法: 动态规划 -- 最长递增子序列(LIS) 原题位置:Longest Increasing Subsequence | LeetCode OJ 题目的说明: 严格递增: 子序 ...

  5. 动态规划(最长递增子序列)---最长递增子序列

    最长递增子序列 300. Longest Increasing Subsequence (Medium) 题目描述:   给定一个数组,找到它的最长递增子序列 思路分析:   动态规划思想,定义一个数 ...

  6. 动态规划算法-04最长递增子序列问题

    最长递增子序列问题 简述 经典的动态规划问题. 问题描述 给定一个序列,求解其中长度最长的递增子序列. 问题分析 这种可以向下查询答案的很容易想到动态规划的解法. 要求长度为i的序列Ai={a1,a2 ...

  7. 动态规划应用--最长递增子序列 LeetCode 300

    文章目录 1. 问题描述 2. 解题思路 2.1 动态规划 2.2 二分查找 1. 问题描述 有一个数字序列包含n个不同的数字,如何求出这个序列中的最长递增子序列长度?比如2,9,3,6,5,1,7这 ...

  8. 最长单调递增子序列_最长递增子序列(动态规划 + 二分搜索)

    题目 给定数组arr,返回arr的最长递增子序列 举例:arr = [2,1,5,3,6,4,8,9,7],返回的最长递增子序列为[1,3,4,8,9] 要求:如果arr的长度为N,请实现时间复杂度为 ...

  9. Leetcode动态规划:300.longest-increasing-subsequence(最长递增子序列)

    300. 最长递增子序列 最近一直在攻克动态规划的题,Leetcode的简单题已经刷完,现在冲中等题,这道题算是一个比较经典的题吧,独立完成,虽然花了两个多小时,但收获很多: 思路:动态规划首先要找到 ...

最新文章

  1. 图灵2010.09书讯
  2. python做马尔科夫模型预测法_隐马尔可夫模型的前向算法和后向算法理解与实现(Python)...
  3. 使用Java使用Amazon Simple Queue Service
  4. tomcat给android发图片,一步一步学会http获取tomcat服务端的图片,在android客户端显示...
  5. GDI+ 学习记录(28): 图像颜色的数据格式 - PixelFormat
  6. P3047 [USACO12FEB]附近的牛Nearby Cows
  7. HUE与Hive的集成
  8. sqlserver、mysql删除重复数据
  9. Datalogic得利捷推出物流应用领域全新标杆产品——AV900
  10. Sublime快捷键大全
  11. 利用HY-SRF05 超声波模块实现超声波的测距避障
  12. sem_init函数用法
  13. unity调用高德地图
  14. Swift Core Graphics教程之Gradients 与 Context
  15. Redis list分页功能
  16. 移民 萨大 计算机本科 移民家园,移民家园
  17. IT人员转行写小白文可以么?
  18. Linux内核进程调度时机和过程
  19. ConcurrentHashMap cas操作以及AtomicLongMap类
  20. pymysqlApi

热门文章

  1. stc15w4k32s4管脚图_stc15w4k48s4管脚图
  2. 【舆情监测平台】网络舆情传播的特征及应对策略
  3. 非静压模型NHWAVE学习(13)——模拟淹没锥形岛屿的水流(shallow flows submerged conical islands)
  4. 科技云报道:以前没人看得上的低代码,火了!
  5. Linux学习笔记之CentOS7学习(一)
  6. 【经典必看】14个实用的数据库设计技巧
  7. EndNote更改同步位置
  8. Redis的一点理解「基本类型」「淘汰策略」
  9. 【安全牛学习笔记】主动信息收集-发现(三)
  10. 【Studio】利用Android Studio录制手机屏幕视频