您的位置:首页 > 编程语言 > MATLAB

序列的最长递增子序列长度 with matlab

2014-10-05 01:43 501 查看
首先生成序列,20个0-100的随机整数

x=floor(rand(1,20)*100)


x= 83     1    68    37    83    50    70    42    30    18    19    68   30    54    15    69    37    86    85    59



接着计算递减的元素

p=find(diff(x)<0)
p=1     3     5     7     8     9    12    14    16    18    19

递减元素的最大间隔就是递增的最大长度

max_l=max(diff(p))
max_l=3

合起来就是一句话

max_l=max(diff(find(diff(x)<0)))




要显示出这个子序列的话

p=find(diff(x)<0);
j=diff(p);
max_l=max(j) %最大增长序列长度
n0=p(find(j==max_l))+1 %子序列起始位置
n1=n0+max_l-1 %子序列结束位置
subS=x(n0:n1) %子序列


计算递减的最大子序列长度

max_l=max(diff(find(diff(x)>0)))


刚才看到有人写的求最大增长子序列长度的C代码,洋洋洒洒一代堆,忍不住用Matlab算了一下,仅供参考
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息