方法一:使用栈的方式

//
//  main.cpp
//  step1
//
//  Created by ljpc on 2018/12/8.
//  Copyright ? 2018年 ljpc. All rights reserved.
//#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include<stack>
using namespace std;const int maxn = 101;
int main(int argc, const char * argv[]) {// 请在这里补充代码,完成本关任务/********* Begin *********/int n;cin>>n;int arr[maxn];memset(arr,0,sizeof(arr));for(int i=1;i<=n;i++){cin>>arr[i];}int id[maxn];memset(id,0,sizeof(id));int dp[maxn];for(int i=1;i<=n;i++)dp[i]=1;int max_index=0; int ans=1;for(int i=2;i<=n;i++){for(int j=1;j<i;j++){if(arr[j]<arr[i]&&dp[j]+1>dp[i]){dp[i]=dp[j]+1;id[i]=j;}}if(dp[i]>ans){max_index=i;ans=dp[i];}}stack<int>st;int i=max_index;st.push(arr[max_index]);//以下这个循环是在模拟递归while(id[i]){i=id[i];st.push(arr[i]);}while(!st.empty()){cout<<st.top()<<" ";st.pop();}cout<<endl;/********* End *********/return 0;
}

方法二:

//
//  main.cpp
//  step1
//
//  Created by ljpc on 2018/12/8.
//  Copyright ? 2018年 ljpc. All rights reserved.
//#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include<stack>
using namespace std;const int maxn = 101;
int main(int argc, const char * argv[]) {// 请在这里补充代码,完成本关任务/********* Begin *********/int n;cin>>n;int arr[maxn];memset(arr,0,sizeof(arr));for(int i=1;i<=n;i++){cin>>arr[i];}int id[maxn];memset(id,0,sizeof(id));int dp[maxn];for(int i=1;i<=n;i++)dp[i]=1;int max_index=0; int ans=1;for(int i=n-1;i>=1;i--){for(int j=i+1;j<=n;j++){if(arr[i]<arr[j]&&dp[j]+1>dp[i]){dp[i]=dp[j]+1;id[i]=j;}}if(dp[i]>ans){max_index=i;ans=dp[i];}}int i=max_index;cout<<arr[i]<<" ";while(id[i]){i=id[i];cout<<arr[i]<<" ";}cout<<endl;/********* End *********/return 0;
}

第1关:最长非降子序列(非连续)问题相关推荐

  1. 最长非降子序列(动态规划dp dynamic programming)

    首先要理解一下什么叫做非降子序列 非降子序列,简单来说就是指给出一个数字序列,在不改变整体顺序的情况下摘出几个来组成一个子序列,这个序列满足从小到大的排序顺序. 所以,最长非降子序列,不难理解就是从这 ...

  2. 动态规划 dp02 最长非降子序列问题 c代码

    先看下题目: 给定一个由n个正整数组成的序列,从该序列中删除若干个整数,使剩下的整数组成非降子序列,求 最长的非降子序列. 例如,由12个正整数组成的序列为:48,16,45,47,52,46,36, ...

  3. 最长非降子序列 动态规划 java

    1. 案例提出 给定一个由n个正整数组成的序列,从该序列中删除若干个整数,使剩下的整数组成非降子序列,求最长的非降子序列. 例如,由12个正整数组成的序列为: 48,16,45,47,52,46,36 ...

  4. 动态规划——最长非降子序列

    前言 先分享一篇文章<动态规划:从新手到专家>,作者正是通过这篇文章来学习的.文中对动态规划的设计思想做了非常详细的介绍,并通过简单问题和复杂问题对动态规划的设计流程进行剖析,以下是作者和 ...

  5. HDU2227(非降子序列的个数)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2227 题意:给定一个长度为n(n <= 100000)的整数序列,求其中的非降子序列的个数. 分析: ...

  6. codeforces F.F. Teodor is not a liar! 最长不降子序列

    题意 给出一堆线段. 询问者每次可以询问一个整数点,回答者告诉询问者这个点被多少根线段包括. 问询问者最多问多少次,还不能确定任意一个整数点都不可能被所有的线段包含. 题解 首先用O(n)的方法计算出 ...

  7. 求序列最长不下降子序列_树状数组解决最长不下降子序列 讲讲主要思路就好...

    展开全部 不降子序列求的是一个元素的值单调e69da5e887aa62616964757a686964616f31333361306430不降的序列. 传统的状态设计便是使用f[n] 表示到达第n位时 ...

  8. 面试题:求最长非重复子序列

    题目:求字符串的最长非重复子序列.比如字符串"dabaccdeff",它的最长非重复子序列为"dabcef" 这道题目与 面试题35:第一个只出现一次的字符 非 ...

  9. 最长非下降子序列(O(nlogn))(offer收割)

    题目   如题 思路   核心思想是,维护一个数组ends,它记录了长度为k的子序列的末尾元素的最小值.听起来很抽象,我们不妨手动演示一遍整个过程.   假设数组a={2,9,4,27,29,15,7 ...

最新文章

  1. 使用Python和OpenCV对轮廓进行排序(从左到右,自上而下)
  2. 方法 - 查询到本周的日期
  3. [NOI2017]游戏(2-SAT)
  4. rpm安装mysql图文
  5. AMPAS/ASC Common File Format LUT
  6. [JDK8]性能优化之使用LongAdder替换AtomicLong
  7. php编译成二进制文件_JVM字节码文件概述
  8. (软件工程复习核心重点)第二章可行性研究习题
  9. Ibatis学习总结2--SQL Map XML 配置文件
  10. win10mongodb链接_Windows 10 安装 Mongodb
  11. Sql Server 2005如何导入DBF文件?
  12. js设计模式——8.中介者模式
  13. 关于影响NodeManager执行MR任务constainer数量的设置问题
  14. 无法登录谷歌账号,提示次浏览器或应用可能不安全
  15. ssm的餐饮点餐系统源码
  16. SSO单点登录系统的设计与实现
  17. 微信支付商户平台的apikey与公众平台的appsecret的区别
  18. 2016年北京邮电大学计算机考研机试试题及答案
  19. 基于Java(JSP)+MySQL实现盐鱼二手物品交易网站【100010280】
  20. ppt太大了怎么改小一些?

热门文章

  1. SPU表管理之更新SPU表数据
  2. 数据结构之列表 timeit
  3. Linux之复制、移动文件及目录命令
  4. https://www.exploit-db.com/能够成功下载的一个CVE编号
  5. MyEclipse的Java Web项目配置环境搭建-如何安装tomact
  6. 使用条件卷积进行实例和全景分割
  7. 网络安全与机器学习(二):网络安全任务如何结合机器学习?
  8. 06 回归算法 - 损失函数、过拟合欠拟合
  9. Flutter 构建完整应用手册-动画
  10. ORM版学员管理系统