求最长不下降序列

给一个序列,求他的最长不下降序列。(并不是连续的序列)

题意不多叙述了。

 

思路:

  定义一个f [ ] 数组,这个数组是用来保存 第 i 个元素的最长不下降序列值

  f [ ]数组里面的最大值,就是最长子序列。

 

例如:

  arr  13  7  9  16  38  24  37  18  44  19  21  22

  f   1    1  2   3    4    4   5     4    6    5    6    7

状态转移方程:

  初始化,所以f [ i ] = 1;

  if (arr [ j ] <= arr [ i ] )   f [ i ] = max ( f [ i ] , f [ j ] + 1) ;

结果:

  输出 f 数组里面的最大值

时间复杂度:

  O( n * n ),两个循环。

 

posted @ 2019-01-21 21:12  stul  阅读(135)  评论(0编辑  收藏  举报