最长上升子序列问题
有一个·长为n的数列a0,a1,....,an-1。请求出这个序列中最长的上升子序列的长度。上升子序列是指对任意的i《j都满足ai《aj的子序列

我们来建立一下递推关系:
定义dp[i]:以a[i]为末尾的最长上升子序列的长度
以ai结尾的上升子序列是
值包含ai的子序列
在满足j《i并且aj《ai的以aj为结尾的上升子序列的尾部,追加上ai后得到的子序列
于是:
dp[i]=max(1,dp[j]+1|j<i&&aj<ai);
例题:

单调递增最长子序列

时间限制:3000 ms  |  内存限制:65535 KB
难度:4
描述
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4

输入
第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出
输出字符串的最长递增子序列的长度
样例输入
3
aaa
ababc
abklmncdefg
样例输出
1
3
7
来源
经典题目
上传者
iphxer

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define max(a,b) a>b?a:b
char s[10005];
int dp[10005];
int main()
{int t;cin>>t;while(t--){cin>>s;memset(dp,0,sizeof(dp));int len =strlen(s);int res = 0;for(int i=0;i<len;i++){dp[i]=1;for(int j=0;j<i;j++){if(s[j]<s[i])dp[i]=max(dp[i],dp[j]+1);}res = max(res,dp[i]);}cout<<res<<endl;}
}

浅析单调递增子序列问题(LIS)相关推荐

  1. 最长单调递增子序列O(NlogN)算法

     O(NlgN)算法 假设存在一个序列d[1..9] ={ 2,1 ,5 ,3 ,6,4, 8 ,9, 7},可以看出来它的LIS长度为5.  下面一步一步试着找出它.  我们定义一个序列B,然后 ...

  2. 最长单调递增子序列 python_最长单调递增子序列

    前面三篇博客分别讲了贪心,递归,分治,今天就说个简单的动态规划(DP)的题目吧.在我心中DP算是比较难的算法,尤其像状态DP,树形DP,因为实力问题就说一个简单的线性DP--最长单调递增子序列. 题目 ...

  3. 算法实验-最长单调递增子序列长度

    问题描述 解决思路 O(n^2) 首先考虑使用动态规划的方法解决该问题.首先将原问题分解为子问题.对于长度为n的序列(从下标1开始),假设前n-1个元素形成了n-1个以arr[i]结尾的单调递增最长子 ...

  4. 动态规划作业 最长单调递增子序列

    动态规划作业 1.最长单调递增子序列 设计一个 O(n2)时间的算法,找出由 n 个数组成的序列 a 的最长单调递增子序列. 提示: 用数组 b[0:n]纪录以 a[i] (0<= i< ...

  5. 最长单调递增子序列(时间复杂度O(nlogn))

    写在前面:仅为个人代码/总结,未必标准,仅供参考!如有错误,还望指出交流,共同进步! 最长单调递增子序列 [题目描述] 找出由n个数组成的序列中的最长单调递增子序列及其长度. [O(n*n)算法解题思 ...

  6. 算法分析——单调递增子序列

    题目描述 设计一个算法,找出由n个数组成的序列的最长单调递增子序列并对算法进行分析.要求时间复杂度分别为O(nlogn)和O(n^2). 方法1 对数组进行遍历,我们设置一个计数器来统计递增序列的长度 ...

  7. NYOJ 单调递增子序列(二)

    单调递增子序列(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 给定一整型数列{a1,a2...,an}(0<n<=100000),找出单调递增最长子序 ...

  8. NYOJ 214 单调递增子序列(二)

    单调递增子序列(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 给定一整型数列{a1,a2...,an}(0<n<=100000),找出单调递增最长子序 ...

  9. [51Nod 1218] 最长递增子序列 V2 (LIS)

    传送门 Description 数组A包含N个整数.设S为A的子序列且S中的元素是递增的,则S为A的递增子序列.如果S的长度是所有递增子序列中最长的,则称S为A的最长递增子序列(LIS).A的LIS可 ...

  10. 最长单调递增子序列 [转]

    [转] http://skynewborn.blog.sohu.com/66594610.html 单调子序列包含有单调递增子序列和递减子序列,不失一般性,这里只讨论单调递增子序列.首先,从定义上明确 ...

最新文章

  1. 深入Python(5):random与range
  2. [BOI2019][第K大问题][暴力剪枝]D2T1 Olympiads
  3. SSD 安装、训练、测试(ubuntu14.04+cuda7.5+openvc2.4.9)
  4. livecd制作 centos
  5. error C1128:字节数超过对象文件格式xxxx.cpp限制:请使用/bigobj进行编译 cmake的解决方式
  6. 群辉安装失败 找不到服务器,synology NAS 存储安装DSM的方法
  7. postgresql 字符串转整数 int、integer
  8. 心情随笔(六):金秋十月备考之路亦别有一番风味
  9. Restrictions
  10. python极客项目编程pdf微盘下载_Python极客项目编程
  11. 从零开始学人工智能--统计学习:统计学习基础知识
  12. 虚拟机VMware的下载、安装与卸载
  13. flutter中的常见色值设置
  14. 时制转换时的电话账单
  15. c语言扑克牌同花顺比大小,为什么打扑克时“同花顺”最大
  16. 解决在MAC上输入法切换慢的问题
  17. endnote 使用方法
  18. 地理空间数据项目实战——共享单车停车需求识别与地图匹配
  19. [PHP] 解决TP5 出现错误 continue targeting switch is equivalent to break. Did you mean to use continue...
  20. HTML做一个简单漂亮的旅游网页(纯html代码)重庆旅游 7页

热门文章

  1. java poi 读取Excel中的手机号
  2. 虚拟化实验室推进计算机网络专业实践教学的解决方案
  3. 【Statistics】10g中 Automatic Statistics Collection维护窗口之探查
  4. 下列关于python2.x和3.x的区别说法正确_1.??下列关于Python2.x和Python3.x的说法,正确的是()...
  5. android js桥接,一种JavaScript和原生APP之间数据交互方法与流程
  6. html的form表单详解
  7. mysql为什么尽量少星号,mysql – select中是否存在星号排除其他列?
  8. 机电工程系计算机网络技术,我院物联网工程专业3+1及计算机网络技术专业2+1项目正式开营...
  9. 如何安装husky_Ubuntu 14.04 编译安装 husky
  10. 文件流操作,报“because it is being used by another process. ”错误解决