试题详情
- 简答题对于给定的一个序列(a1,a2,...aN),1≤N≤1000。我们可以得到一些递增上升的子序列(ai1,ai2,...aiK),这里1≤i1〈i2〈...iK≤N。比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),(3,4,8)等等。这些子序列中最长的长度是4,比如子序列(1,3,5,8)。你的任务:就是对于给定的序列,求出最长上升子序列的长度。要求写出你设计的算法思想及递推函数的公式表达。
-
设f(i)表示:从左向右扫描过来直到以a[i]元素结尾的序列,获得的最长上升子序列的长度,且子序列包含a[i]元素(1≤i≤n)。
即,f(i)是从f(1),f(2),……到f(i-1)中找最大的一个值,再加1。或者就是1。主要是看a[i]这个元素能否加入到之前已经获得的最长上升子序列,如果能加入,是之前已获得的最长上升子序列长度加一;如果不能加入,就取这最后一个元素作为一个单独子序列,长度为1。
最后,所要求的整个序列的最长公共子序列长度为max{f(i):1<=i<=n}
关注下方微信公众号,在线模考后查看
热门试题
- 数据结构与算法里,二叉排序树的查找方式和
- 关于跳转语句continuebreak常
- 函数调用的一种特殊,即自己调用自己称为(
- 排序可以分为四大类,主要包含有()。
- 冒泡排序是不稳定的排序。
- 数据结构与算法里,关于二叉排序树的递归性
- 折纸问题属于迭代算法解决的一类问题。
- 数据结构与算法里,若查找表中不存在特定元
- 数据结构与算法里,比荷兰国旗算法时间复杂
- 4和8的最小公倍数是()
- 考虑在序列A[1..n]中找最大最小元素
- 递归通常用()来实现。
- 用快速排序算法对序列45,35,65,
- 数据结构与算法里,查找的结果可能在集合中
- 冒泡排序,交换的是相邻元素,因此()。
- 冒泡排序和()都属于交换排序。
- 用动态规划算法解决最大字段和问题,其时间
- 请用分治策略设计递归的归并排序算法,并分
- 对下列各组函数f(n)和g(n),确定
- 数据结构与算法里,荷兰国旗算法的需要使用