- 4
- 0
- 约5.61千字
- 约 49页
- 2018-02-27 发布于天津
- 举报
演示文稿演讲PPT学习教学课件医学文件教学培训课件
常用算法与程序设计 * 【例6.6】 给定一个由n个正整数组成的序列,从该序列中删除若干个整数,使剩下的整数组成非降子序列,求最长的非降子序列。 (1) 建立递推关系 设置b数组,b(i)表示序列的第i个数(保留第i个数)到第n个数中的最长非降子序列的长度,i=1,2,…,n。对所有的ji,比较当 a(j)≥a(i)时的b(j)的最大值,显然b(i)为这一最大值加1,表示加上a(i)本身这一项。 因而有递推关系: b(i)=max(b(j))+1 (a(j)≥a(i),1≤ij≤n) 边界条件: b(n)=1 6.5 最长子序列探索 6.5.1 最长非降子序列 常用算法与程序设计 * (2) 逆推计算最优值 b[n]=1; for(i=n-1;i=1;i--) {max=0;for(j=i+1;j=n;j++) if(a[i]=a[j] b[j]max) max=b[j]; b[i]=max+1; /* 逆推得b[i] */ } 逆推依次求得b(n-1),…,b(1),比较这n-1个值得其中的最大值lmax,即为所求的最长非降子序列的长度即最优值。 常用算法与程序设计 * (3) 构造最优解 从序列的第1项开始,依次输出b(i)分别等于lmax,lmax-1,…,1的项a
原创力文档

文档评论(0)