问题描述
最长递增子序列也称 “最长上升子序列”,简称LIS ( longest increasing subsequence)。设L=是n个不同的实数的序列,L的递增子序列是这样一个子序列Lis=,其中k1
如:求一个一维数组arr[i]中的最长递增子序列的长度,如在序列{ 7, 1, 6, 5, 3, 4, 8 }中,最长递增子序列长度为4,其递增子序列为:1,3,4,8。...
分类:
其他好文 时间:
2014-05-15 15:06:59
阅读次数:
328
OJ题目:click here~~
题目分析:设dp[ i ] 为前i个数的子序列的个数 , 下标从1开始。计算dp[ i ] 。第一种情况, 如果x[ i ] 与前面的数都不相同 , 则
dp[ i ] = dp[ i - 1] + dp[ i - 1] + 1 , 即 = 都把x[ i ] 放在后面 + 都不把x[ i ]放在后面 + x[ i ] 单独成一个序列。
第二种情况,如果x[...
分类:
其他好文 时间:
2014-05-15 05:13:13
阅读次数:
223
题意:最大连续子序列和,在一个数组中找到和最大的连续子数组
思路:dp, 对于第i个数,有两种选择:把它加入在子数组里,不加入子数组(子数组到此结束)
加不加入子数组,要比较它加入前后子数组的总和是变大了还是变小了,如果变大则加入,变小则不加入
所以,我们需要记录以i-1结尾的子数组的总和,最后的结果在这些总和中取最大的那个
f[i] = max(f[i-1]+a[i],f[i-1]);
max({f[i]})
实现时用两个变量,一个保存f[i-1],一个保存目前为止最大的f[i]
复杂度:时间O(n),空...
分类:
其他好文 时间:
2014-05-14 21:53:14
阅读次数:
250
希尔排序是由D.L.Shell于1959年提出的,所以称为希尔排序。希尔排序又称缩小增量排序,是插入排序的一种改进。
基本思想:希尔排序是基于插入排序的以下特点:待排序的序列元素数量越少排序速度越快;待排序序列的元素基本有序时排序速度越快;基于以上思想将待排序序列分为多个子序列分别进行插入排序,然后...
分类:
其他好文 时间:
2014-05-13 22:11:01
阅读次数:
272
最长公共子序列是动态规划基本题目,下面按照动态规划基本步骤解出来。
1.找出最优解的性质,并刻划其结构特征
序列a共有m个元素,序列b共有n个元素,如果a[m-1]==b[n-1],那么a[:m]和b[:n]的最长公共子序列长度就是a[:m-1]和b[:n-1]的最长公共子序列长度+1;如果a[m-1]!=b[n-1],那么a[:m]和b[:n]的最长公共子序列长度就是MAX(a[:m-1]和...
分类:
编程语言 时间:
2014-05-13 07:57:53
阅读次数:
538
归并排序也是基于分治思想的一种排序算法,是通过对两个或两个以上的有序序列合并来实现的,对两个序列合并的叫两路归并,对两个以上序列合并的叫多路归并。归并排序的时间复杂度也为O(N*logN)。下面来看一下两路归并的实现:基本思想:归并排序时先找出序列的中间元素把序列分解为两个子序列,对子序列重复这个过...
分类:
其他好文 时间:
2014-05-12 05:47:59
阅读次数:
298
这道题,对于我这种英文不好的人来说,有点费劲啊。题目的意思:给你两组成绩,你要找出他们之间最大的公共子序列,不能有重复,然后输出两组数据。第一组就是:按照从大到小输出最大子序列。第二组就是:按照个位数由小到大输出,若个位数一样大,则小的在前输出最大子序列。解题思路基本上已经出来了,就是千万要注意就是...
分类:
其他好文 时间:
2014-05-11 05:13:47
阅读次数:
384
1.
归并排序原理:有长度为n的子序列a[n],可以将其看做n个长度为1的子序列,将相邻子序列两两归并后子序列数量减少一半,再对子序列进行两两归并,数量又减少一般,重复直到得到一个长度为n的子序列2.
实现归并操作的代码如下:/*array[s…m]和array[m+1…t]均已各自有序,合并使得a...
分类:
其他好文 时间:
2014-05-10 00:28:40
阅读次数:
382
题意:
题意好复杂。。。
给定n个人,从左到右排好队。
他们依次从左到右离开队伍。
每个人有个权值d
当某个人是第k-th离开队伍的,那么不开心值为 d*(k-1)
有一个操作,对于一个子序列,可以把前面一段翻转。
问最小的不开心值和。
#include
#include
#include
#include
#include
#include
using namespace...
分类:
其他好文 时间:
2014-05-09 20:45:04
阅读次数:
288
快速排序基本思想:选取一个枢轴元素(图简单可选第一个),通过对序列一次遍历(中间涉及到数的交换),将该枢轴放置到序列合适位置,保证其左边数都比它小,右边数都比它大,然后利用递归思想对其左右两个子序列进行同样排序。快熟排序的基本实现过程:将枢轴元素key备份,序列头尾各设置一个游标——i和j,尾部.....
分类:
其他好文 时间:
2014-05-09 13:01:56
阅读次数:
360