1299最长上升子序列
最长上升子序列
Problem Description
你的任务,就是对于给定的序列,求出最长上升子序列的长度。
Input
Output
Example Input
7 1 7 3 5 9 4 8
Example Output
4
上升子序列:去掉原序列中任意多个数字,剩余按升序排列排列的新序列。
思路:避免重复查找比较,用数组记录每个位置下最大上升序列长度。
次实现方法时间复杂度为n*n
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{int n,maxi,maxlen=1;scanf("%d",&n);int a[n+1],len[n+1];for(int i=1;i<=n;i++)scanf("%d",&a[i]);for(int i=1;i<=n;i++)len[i]=1;for(int i=2;i<=n;i++){maxi=0;for(int j=1;j<=i-1;j++){if(a[j]<a[i]&&len[j]>maxi)maxi=len[j];}len[i]=maxi+1;if(len[i]>maxlen)maxlen=len[i];// printf("maxlen=%d\n",len[i]);}printf("%d\n",maxlen);return 0;
}
时间复杂度为nlogn的实现方法:
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{int n;while(scanf("%d",&n)!=EOF){int a[n+1],len[n+1];for(int i=0;i<n;i++)scanf("%d",&a[i]);len[0]=1;int lens=1,mid;len[0]=a[0];for(int i=1;i<n;i++){int left=0;int right=lens;while(left<right){mid=(left+right)/2;if(len[mid]<a[i])left=mid+1;elseright=mid;}len[left]=a[i];if(left>=lens)lens++;}printf("%d\n",lens);}return 0;
}
1299最长上升子序列相关推荐
- 最长公共子序列(LCS)问题 Longest Common Subsequence 与最长公告字串 longest common substr...
问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X="x0,x1,-,xm-1",序列Y=& ...
- 最长连续子序列nlogn算法
最长上升子序列(LIS)长度的O(nlogn)算法 标签: 算法search优化存储 2012-04-18 19:38 14031人阅读 评论(5) 收藏 举报 分类: 资料学习(15) 解题报告 ...
- leetcode-300 最长上升子序列
题目描述: 给定一个无序的整数数组,找到其中最长上升子序列的长度. 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度 ...
- 【动态规划】最长公共子序列与最长公共子串
1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...
- POJ 3080 多个串最长公共子序列
求多个串最长公共子序列,字典序最小输出.枚举剪枝+kmp.比较简单,我用find直接查找16ms #include<iostream> #include<string> #in ...
- java实现最长连续子序列_最长公共子序列 ||
问题:在 前一篇文章 最长公共子序列 | 的基础上要求将所有的最长公共子序列打印出来,因为最长公共子序列可能不只一种. 难点:输出一个最长公共子序列并不难,难点在于输出所有的最长公共子序列,我们需要在 ...
- 动态规划——最长上升子序列问题 两种角度及优化算法
最长上升子序列 OpenJ_Bailian - 2757 一个数的序列 bi,当 b1 < b2 < ... < bS的时候,我们称这个序列是上升的.对于给定的一个序列( a1, a ...
- 动态规划—最长公共子序列问题 HDU-1159 Common Subsequence
动态规划-最长公共子序列问题 Common Subsequence [ HDU - 1159 ] A subsequence of a given sequence is the given sequ ...
- 最长递增子序列的两种解法
以LeetCode-300为例: O(n^2)解法: dp数组表示以i结尾的最长递增子序列的长度 class Solution { public:int lengthOfLIS(vector<i ...
- 触类旁通,经典面试题最长公共子序列应该这么答
作者 | labuladong 来源 | labuladong(ID:labuladong) [导读]最长公共子序列(Longest Common Subsequence,简称 LCS)是一道非常经 ...
最新文章
- centos7搭建需密码登入的简易ftp服务器
- C#只能lock 引用类型的值 (转载)
- [uEnv.txt]在uEnv.txt文件中使用if语句实现Image/dtb文件切换
- unity开宝箱动画_[技术博客]Unity3d 动画控制
- 北斗导航 | GNSS技术在自动驾驶中的作用
- 安装DNN时可能出现的错误
- dubbo服务提供与消费
- GIT学习笔记2--基本使用
- Navicat安装(图文教程)
- 【渝粤教育】电大中专药事管理与法规 (2)_1作业 题库
- mysql自动去重_关于mysql自联去重的一些记录
- linux命令mvn,Linux下使用mvn命令(maven)
- linux日志删除了还能恢复吗,Linux系统中恢复被删除日志的方法
- C# 如何插入、编辑和删除Excel批注
- 桌面下雪小程序 WIN32
- 华为hcia-datacom 学习日记
- 人脸识别门禁的那些“坑”,你中招了吗?
- Sun正式启动Orbit:openlaszlo的JavaME运行时目标
- 如何用CMake编译从github上下载的源码
- C语言的文件读取与写入操作
热门文章
- 图灵社区python kindle_推送mobi至Kindle流程说明(简要操作)
- 中兴新支点操作系统_中兴新支点国产操作系统体验如何?笔者告诉你
- Mac 借用工具删除顽固软件、清除它在开机启动项的内容
- deepfacelab安卓版_DeepFaceLab2020版本下载
- 大数据软件有哪些,一网打尽
- 自己的旧手机做html服务器,旧手机改座机_怎么将手机改成为座机
- Android 不透明度值换算
- 我的毕业生涯至从零开始从事编程开发
- python处理xps文件_xps/pdf/png/json转换
- 操作系统实验七:动态分区分配方式的模拟