一,    最长递增子序列问题的描述

  设L=<a1,a2,…,an>是n个不同的实数的序列,L的递增子序列是这样一个子序列Lin=<aK1,ak2,…,akm>,其中k1<k2<…<km且aK1<ak2<…<akm。求最大的m值。

 

二,算法:动态规划法:O(n^2)
  设f(i)表示L中以ai为末元素的最长递增子序列的长度。则有如下的递推方程:

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

NYOJ 17 http://acm.nyist.net/JudgeOnline/problem.php?pid=17

单调递增最长子序列

时间限制:3000 ms  |  内存限制:65535 KB
难度:4

描述
求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入
第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出
输出字符串的最长递增子序列的长度
样例输入
3
aaa
ababc
abklmncdefg
样例输出
1
3
7

 1
 2 #include<stdio.h>
 3 #include<string.h>
 4 int main()
 5 {
 6     int a[10010],i,j,n;
 7     char s[10001];
 8     scanf("%d",&n);
 9     while(n--)
10     {
11         scanf("%s",s);
12         int max,len=strlen(s);
13         for(i=0;i<len;i++)
14         a[i]=1;
15         for(i=1;i<len;i++)
16         {
17             max=0;
18             for(j=0;j<i;j++)
19             {
20                 if(s[j]<s[i]&&max<a[j])
21                 {
22                     max=a[j];
23                 }
24             }
25             a[i]=max+1;
26         }
27         max=a[0];
28         for(i=0;i<len;i++)
29         {
30             if(a[i]>max)
31             max=a[i];
32         }
33         printf("%d\n",max);
34     }
35     return 0;
36 }        

View Code

NYOJ 79 http://acm.nyist.net/JudgeOnline/problem.php?pid=79

描述

某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于等于前一发的高度。某天,雷达捕捉到敌国导弹来袭。由于该系统还在试用阶段,所以只用一套系统,因此有可能不能拦截所有的导弹。

输入
第一行输入测试数据组数N(1<=N<=10)
接下来一行输入这组测试数据共有多少个导弹m(1<=m<=20)
接下来行输入导弹依次飞来的高度,所有高度值均是大于0的正整数。
输出
输出最多能拦截的导弹数目
样例输入
2
8
389 207 155 300 299 170 158 65
3
88 34 65
样例输出
6
2

 1 #include<stdio.h>
 2 #include<string.h>
 3 int main()
 4 {
 5     int f[100],i,j,n,a[100],max;
 6     scanf("%d",&n);
 7     while(n--)
 8     {
 9         int t;
10         scanf("%d",&t);
11         for(i=0;i<t;i++)
12         scanf("%d",&a[i]);
13         f[0]=1;
14         for(i=1;i<t;i++)
15         {
16             max=0;
17             for(j=0;j<i;j++)
18             {
19                 if(a[j]>a[i]&&max<f[j])
20                 {
21                     max=f[j];
22                 }
23             }
24             f[i]=max+1;
25         }
26         max=f[0];
27         for(i=0;i<t;i++)
28         {
29             if(f[i]>max)
30             max=f[i];
31         }
32         printf("%d\n",max);
33     }
34     return 0;
35 }

View Code

转载于:https://www.cnblogs.com/zeze/p/lcmzixunlie.html

最长递增子序列问题 nyoj 17单调递增最长子序列 nyoj 79拦截导弹相关推荐

  1. NYOJ 17 单调递增最长公共子序列

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

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

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

  3. NYOJ 79 拦截导弹

    拦截导弹 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任 ...

  4. LeetCode 673. 最长递增子序列的个数(DP)

    1. 题目 给定一个未排序的整数数组,找到最长递增子序列的个数. 示例 1: 输入: [1,3,5,4,7] 输出: 2 解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, ...

  5. 最长上升子序列 (LIS) 详解+例题模板 (全)

    欢迎访问https://blog.csdn.net/lxt_Lucia-- 宇宙第一小仙女\(^o^)/-萌量爆表求带飞=≡Σ((( つ^o^)つ~ dalao们点个关注呗- ------------ ...

  6. LIS最长上升子序列详解(动态规划、贪心+二分、树状数组)

    1.摘要: 关于LIS部分,本篇博客讲一下LIS的概念定义和理解,以及求LIS的三种方法,分别是O(n^2)的DP,O(nlogn)的二分+贪心法,以及O(nlogn)的树状数组优化的DP,最后附上几 ...

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

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

  8. 5-3 最长连续递增子序列 (20分)

    5-3 最长连续递增子序列 (20分) 给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列.例如,(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8 ...

  9. 程序员面试100题之十二:求数组中最长递增子序列

    写一个时间复杂度尽可能低的程序,求一个一维数组(N个元素)中最长递增子序列的长度. 例如:在序列1,-1,2,-3,4,-5,6,-7中,其最长递增子序列为1,2,4,6. 分析与解法 根据题目要求, ...

最新文章

  1. 扩展存储过程在哪里_北京延庆工业废水处理哪里有
  2. 登录之验证码相关实现
  3. mysqldump导入导出mysql数据库
  4. VTK:Actor边缘颜色用法实战
  5. c++ stl 标准库容器的选择原则(图)
  6. Android 开发问题记录
  7. java电子商务系统源码 Spring MVC+mybatis+spring cloud+spring boot+spring security
  8. 计算机应用计算机电算化题库,2014年浙江省会计电算化客观题题库
  9. python核心编程:杂记2
  10. 一张图全解析个性化邮件那么重要
  11. 【从C到C++学习笔记】面向对象/抽象/封装/继承/多态
  12. mysql插入datetime默认值0000-00-00时报错
  13. ddtek.oracle.dll使用相关
  14. live2d_Live2D | CubismSdkForUnity4r.1简介(下)
  15. 假如时光倒流,我会这么学习Java 【转载】
  16. NXP与STM32单片机程序架构
  17. 乐高收割机器人_乐高机器人这个大坑,为啥大家都拽着孩子往里跳?(想了解乐高机器人比赛看这一篇就够了)...
  18. python中value的含义_python中value的意思
  19. 局域网搭建Linux镜像源
  20. windows10升级windows11后微信等软件无法连接网络

热门文章

  1. Mac 不显示未知来源选项的解决办法
  2. S参数和史密斯圆问题
  3. 逐梦offer -- JVM篇
  4. 我的世界神奇宝贝服务器修改体型,在我的世界神奇宝贝服务器里怎么作弊quest; | 手游网游页游攻略大全...
  5. 行业前研|人工智能在作战仿真中的应用
  6. linux网卡断流测试,Windows XP SP2操作系统下网络非完全断流的再分析(转)
  7. OpenCV笔记:cv2.VideoCapture 完成视频的跳帧输出操作
  8. 新时代下智慧消防的发展趋势分析
  9. python agg
  10. 华为java 优招面试题_华为面试题及答案