版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、最长上升子列问题LIS,最长上升子列问题LIS,问题: 给出一个数列,要求从这个数列中找出一个最长的子列,使得这个子列的元素是严格单调上升的。 输入: 第一行是一个数N,表示数列的长度。第二行是N个数,表示这个数列。其中N=300000。 输出: 输出仅有一个数,最长子列的长度。 样例输入: 6 3 7 2 4 6 8 样例输出: 4,分析:,1.考虑某个位,到达该位的最长上升序列只与其前面位的数字有关而与其后面位无关,即具有子结构性质; 2.设FI表示第I位数字的最长上升子序列长度,则FI值只与当AJAI(JI)对应的子序列有关,容易获得: FI=MAXFJ(AJAI(JI)+1 3.自底向
2、上的方式计算问题的最优值,显然FI的初值为1,以下是对样例的模拟操作分析,设ai为第i个数,fi为到第i个数最长上升子序列的大小,初始时fi=0,f1=1,,procedure main; var i,j,max:integer; begin max:=1; f1:=1; for i:=2 to n do begin for j:=1 to i-1 do求符合条件子列最大值 if (ajfi) then fi:=fj; inc(fi);子列最大值加1 if fimax then max:=fi; end; writeln(max); end;,算法效率:O(n2),注意观察相同上升长度的子序列
3、,如:长度为4的序列:3 5 6 8,3 4 5 7,3 4 5 6,影响后面最长子序列的是3 4 5 6序列。 证明: 因为6是长度为4序列中尾数最小的序列,如果一个数能加入长度为4的其它序列中也必定能加入该序列中。 故相同长度的子序列的有效信息是其序列中尾数最小的数。因此我们如果增加一个数组记录下每种序列结尾最小值,可不可以降低算法的时间复杂度呢?,序列 3 7 5 4 6 8 5 7 6 7 上升长度 1 2 2 2 3 4 3 4 4 5,建立一个数组sk来储存所有长度为j的最长上升子序列的最后一个数字的最小值。即,sk=minaJ( FJ=K,1=J=I)。,对sk能发现什么性质?,
4、sK值是单调上升的!,改进算法: 原算法的弊端是每次需要花O(n)的时间寻找最优子序列. 由于sK值是单调上升 (1)考虑到ai元素时,用二分法在sk中寻找最大的一个k使skaI,让fI=k+1,否则fI保留原值. (2)IF AI SfI THEN 更新SfI=AI 这样,使算法的复杂度下降为O(nlog2n)。,分步变化示例如下:,(1),(2),(3),(4),(5),(6),program LIS; var n,i,max,k,e:integer;n数据长度,e记录已知序列总数,max最优值 num,dp,maxn:array 1.300000 of integer;num记录数据,d
5、p记录序列长度,maxn记录每种序列结尾最小值 function find(x:integer):integer;二分查找,寻找当前值所在的区间 var left,right,mid:integer; begin left:=1;right:=e; mid:=(left+right) div 2; while leftx then right:=mid-1 else left:=mid+1; mid:=(left+right) div 2; end; find:=mid-1; end;,begin assign(input,lis.in); reset(input); assign(output,lis.out); rewrite(output); readln(n); for i:=1 to n do maxni:=30000; for i:=1 to n do read(numi); dp1:=1; maxn1:=num1; e:=1; for i:=2 to n do 动态规划过程 begin k:=find(numi)+1; if k+1dpi then dpi:=k+1; if k+1e then e:=k+1; if numimaxndpi then maxndpi:=num
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 48284-2026航空航天直线式液压作动筒通用规范
- T/ZLJ 007-2023冷冻蜗牛肉
- T/JMBX 0286-2024江门优品 马冈鹅制品
- T/CNCA 121-2025露天煤矿三维地质建模技术要求
- T/CAWAORG 002-2021中国疼痛科专业团体标准
- T/CSMT-DZ 007-2025 T/HZLED 001-2025室外 Mini/Micro LED显示屏通用技术要求
- GB/T 34630.4-2026搅拌摩擦焊铝及铝合金第4部分:焊接工艺规程及评定
- 2025~2026学年广东省深圳市福田区北师大版六年级上册12月课堂素养练习数学试卷【附答案】
- 2026学年江苏省盐城市四年级语文期末高分快速提分卷(详细参考解析)详细答案和解析
- AI大模型棋牌游戏技巧与攻略
- 2026年模具研发高级技术专家招聘笔试试卷 招录11人考试题库
- 2026年发展对象培训结业测试及答案解析
- 2026年新版预防未成年人犯罪法知识竞赛题库及参考答案
- 2026“弘扬长征精神 奋进新征程”知识竞赛题库(含答案解析)
- 2026年10月自考00323西方行政学说史模拟题及答案详解
- 2026年云南云上云大数据产业发展有限公司及下属子公司第一次社会招聘(32人)笔试模拟试题及答案详解
- 2026粒径分析考试题及答案
- 2026中国新能源电池技术研发行业市场现状趋势分析投资策略规划报告
- 2026秋沪教牛津版五年级上英语单词默写(默写)
- 医疗器械质量保证控制程序
- 2026年全国注册会计师(CPA)考试会计真题及答案(持续更新)
评论
0/150
提交评论