序列的最長遞增子序列長度 with matlab
阿新 • • 發佈:2019-02-08
首先生成序列,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算了一下,僅供參考