动归之最长上升子序列_第1页
动归之最长上升子序列_第2页
动归之最长上升子序列_第3页
动归之最长上升子序列_第4页
动归之最长上升子序列_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

信息科学技术学程序设计实刘家1信息科学技术学院《程序设计实习》刘家最长上升子序2一个数的序列ai,当a1<a2<...<aS的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2,...,aN),我们可以得到一些上升的子序列(ai1,ai2,...,aiK),这里1<=i1<i2iKN。比如,对于序列(1,7,35,9,4,8),有它的一些上升子序列,如(17)(348)列中最长的长度是4,比如子序列(1,353输入的第一行是序列的长度N1N1000)。第二行给出717359444找子假设F(n)=x,但可能有多个序列满足F(n)=x。有的序列的最后一个元素比an+1小,则加上an+1就能形成更长上5“求以ak(k=1,2,3…N)为终点的最长上升子序列的6确定状态子问题只和一个变量--数字的位置相关。因此序列中数的位置k是“状态”,而状k应的“值”,就是以ak状态一共有N7maxLen(k)表示以ak做为“终点”的初始状态:maxLen(1)maxLen(k)maxmaxLeni):1<=ik若找不到这样的i,则maxLen(k)=

akk≠1maxLen(k)的值,就是在ak左边,“终点”数值小于ak,且长度8#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;

constintMAXNintintmain()

intint cin>>for(inti=1;i<=N;++i)cin>>maxLen[i]=}for(inti2iN;i)//每次求以第i个数为终点的最长上升子序列的长度for(intj=1;j<i;++j)//察看以第j个数为终点的最长上升子序列if(a[i]>a[j]maxLen[i]=}cout<<*max_element(maxLen+1,maxLen+N+1return}//时间复杂度 i i #include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;

constintMAXN=1010;inta[MAXN];intfor(intifor(inti=2;i<=N;for(intj=1;j<i;++j)if(a[i]>a[j])maxLen[i]int cin>>for(inti=1;i<=N;++i)cin>>maxLen[i]=}for(inti=1;i<=N;for(intj=i+1;j<=N;++j) if(a[j]>a[i])maxLen[j]=c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论