题目:一个序列有N个数:A[1],A[2],…,A[N],求出最长非降子序列的长度。(见动态规划---LIS)

  1. /*
  2. 题目:一个序列有N个数:A[1],A[2],…,A[N],求出最长非降子序列的长度。
  3. */
  4. #include <stdio.h>
  5.  
  6. unsigned max_len( int [] , size_t );
  7. size_t b_point( int [] , size_t );
  8. int max(size_t , size_t );
  9.  
  10. int main( void )
  11. {
  12.  
  13. int arr[] = { , , , , , , , , , };
  14.  
  15. printf("%u\n" , max_len( arr , sizeof arr / sizeof arr[] ) );
  16.  
  17. return ;
  18. }
  19.  
  20. unsigned max_len( int a[] , size_t n )
  21. {
  22. if ( n <= 1u )
  23. return n ;
  24.  
  25. size_t m = b_point ( a , n ) ;
  26.  
  27. return max( m , max_len ( a + m , n - m ) ) ;
  28.  
  29. }
  30.  
  31. size_t b_point ( int a[] , size_t n )
  32. {
  33. size_t i ;
  34.  
  35. for ( i = 1u ; i < n ; i++ )
  36. if ( a[i-] > a[i])
  37. return i - 0u ;
  38.  
  39. return i - 0u ;
  40. }
  41.  
  42. int max( size_t n1 , size_t n2 )
  43. {
  44. if ( n1 > n2 )
  45. return n1;
  46.  
  47. return n2;
  48. }
  1. /*
  2. 题目:一个序列有N个数:A[1],A[2],…,A[N],求出最长非降子序列的长度。
  3. */
  4. #include <stdio.h>
  5.  
  6. unsigned max_len( int [] , size_t );
  7. size_t b_point( int [] , size_t );
  8.  
  9. int main( void )
  10. {
  11. int arr[] = { , , , , , , , , , };
  12.  
  13. printf("%u\n" , max_len( arr , sizeof arr / sizeof arr[] ) );
  14.  
  15. return ;
  16. }
  17.  
  18. unsigned max_len( int a[] , size_t n )
  19. {
  20. size_t len = 0u ;
  21. while ( n > 0u )
  22. {
  23. size_t mid = b_point( a , n );
  24.  
  25. if ( mid > len )
  26. len = mid ;
  27.  
  28. a += mid ;
  29. n -= mid ;
  30. }
  31. return len ;
  32. }
  33.  
  34. size_t b_point ( int a[] , size_t n )
  35. {
  36. size_t i ;
  37.  
  38. for ( i = 1u ; i < n ; i++ )
  39. if ( a[i-] > a[i])
  40. return i - 0u ;
  41.  
  42. return i - 0u ;
  43. }

非 动态规划---LIS的更多相关文章

  1. 2021.12.06 P2501 [HAOI2006]数字序列(动态规划+LIS)

    2021.12.06 P2501 [HAOI2006]数字序列(动态规划+LIS) https://www.luogu.com.cn/problem/P2501 题意: 现在我们有一个长度为 n 的整 ...

  2. BZOJ_1609_[Usaco2008_Feb]_Eating_Together_麻烦的聚餐_(动态规划,LIS)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1609 给出一串由1,2,3组成的数,求最少需要改动多少个数,使其成为不降或不升序列. 分析 法 ...

  3. 动态规划-LIS最长上升子序列

    优化链接 [https://blog.csdn.net/George__Yu/article/details/75896330] #include<stdio.h> #include< ...

  4. HDU - 1160 FatMouse's Speed 动态规划LIS,路径还原与nlogn优化

    HDU - 1160 给一些老鼠的体重和速度 要求对老鼠进行重排列,并找出一个最长的子序列,体重严格递增,速度严格递减 并输出一种方案 原题等于定义一个偏序关系 $(a,b)<(c.d)$ 当且 ...

  5. HDU-1051/POJ-1065 Wooden sticks 木棍子(动态规划 LIS 线型动归)

    嘤嘤嘤,实习半年多的小蒟蒻的第一篇博客(题解) 英文的: There is a pile of n wooden sticks. The length and weight of each stick ...

  6. POJ_1631_Bridging_Signals_(动态规划,LIS)

    描述 http://poj.org/problem?id=1631 铁路左右相连,要求去掉一些边,使得剩下的边不交叉,求剩余边数的最大值. Bridging signals Time Limit: 1 ...

  7. POJ_1065_Wooden_Sticks_(动态规划,LIS+鸽笼原理)

    描述 http://poj.org/problem?id=1065 木棍有重量 w 和长度 l 两种属性,要使 l 和 w 同时单调不降,否则切割机器就要停一次,问最少停多少次(开始时停一次). Wo ...

  8. 动态规划-LIS

    https://vjudge.net/contest/297216?tdsourcetag=s_pctim_aiomsg#problem/E #include<bits/stdc++.h> ...

  9. P1091 合唱队形题解(洛谷,动态规划LIS,单调队列)

    先上题目 P1091 合唱队形(点击打开题目) 题目解读: 1.由T1​<...<Ti​和Ti​>Ti+1​>…>TK​可以看出这题涉及最长上升子序列和最长下降子序列 2 ...

随机推荐

  1. 安装MVC3后没有dbcontext生成器的解决方案

    安装MVC3后,采用DBFIRS的方式,从数据库生成模型,这样生成的类是基于ObjectContext的,无法使用DbContext的一些方法,比如Set.Find.Entry等.需要用ADO.NET ...

  2. imx6 KEY_ROW4 power output high fail

    imx6 KEY_ROW4的pin设置成gpio之后,不能够输出高电平.解决方法记录于此. 参考链接: https://lists.yoctoproject.org/pipermail/meta-fr ...

  3. JavaScript:基础表单验证

    在用户填写表单的过程之中,往往需要编写一堆的验证操作,这样就可以保证提交的数据时正确的.那么下面就模拟表单验证的处理操作完成. 如果要想进行验证,首先针对于输入的数据来进行一个验证处理. 1.定义一个 ...

  4. 高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化

    高性能Linux服务器 第10章    基于Linux服务器的性能分析与优化 作为一名Linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行.但硬件问题.软件问题.网络环境等 ...

  5. 中国电信某站点JBOSS任意文件上传漏洞

    1.目标站点 http://125.69.112.239/login.jsp 2.简单测试 发现是jboss,HEAD请求头绕过失败,猜测弱口令失败,发现没有删除 http://125.69.112. ...

  6. nginx源码学习----内存池

    最近在进行监控平台的设计,之前一直觉得C/C++中最棘手的部分是内存的管理上,远不止new/delete.malloc/free这么简单.随着代码量的递增,程序结构复杂度的提高.各种内存方面的问题悄然 ...

  7. Java 多线程Future和FutureTask

    Future表示一个任务的周期,并提供了相应的方法来判断是否已经完成或者取消,以及获取任务的结果和取消任务. Future接口源码: public interface Future<V> ...

  8. SLAM学习笔记(1)基本概念

    SLAM (simultaneous localization and mapping),也称为CML (Concurrent Mapping and Localization), 即时定位与地图构建 ...

  9. MFC和GDI+一起使用

    VS2010,新建MFC项目,在头文件stdafx.h中添加: #include <gdiplus.h> using namespace Gdiplus; #pragma comment ...

  10. Hibernte继承映射

    继承映射分为三种: 继承结构共用一张表结构 每个类一张表结构 每个具体类一张表结构 下面使用Animal.Dog.Fish举例 Animal类如下: package com.hml.domain.a; ...