所謂的上公升子串,要求子串行連續。如對於[3,2,4,5,3,6] ,應當返回3,對應的最長子串為[2,4,5]。
定義狀態變數dp[i]:包括nums[i]在內的最長子串長度。
狀態轉移函式: 如果num
s[i]
>nu
ms[i
−1
]nums[i]>nums[i-1]
nums[i
]>nu
ms[i
−1]則dp[
i]=d
p[i−
1]+1
dp[i]=dp[i-1]+1
dp[i]=
dp[i
−1]+
1;否則dp[
i]=1
dp[i]=1
dp[i]=
1
def
maxascendingarray
(array)
: dps =[1
for _ in
range
(len
(array))]
maxlength =
1# 記錄最長長度
maxendindex =
0# 記錄最長對應的索引
for i in
range(1
,len
(array)):
if array[i]
> array[i-1]
: dps[i]
= dps[i-1]
+1if dps[i]
> maxlength:
maxlength = dps[i]
maxendindex = i
return maxlength, array[maxendindex+
1-maxlength:maxendindex+
1]
動態規劃 最長上公升子串行
問題描述 乙個數的序列bi,當b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列 a1,a2,an 我們可以得到一些上公升的子串行 ai1,ai2,aik 這裡1 i1 i2 ik n。比如,對於序列 1,7,3,5,9,4,8 有它的一些上公升子串行,如 1,7 3,4,8 等等...
動態規劃 最長上公升子串行
動態規劃 儲存遞迴中間結果,減少遞迴次數 總時間限制 2000ms 記憶體限制 65536kb 描述 乙個數的序列 bi,當 b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列 a1,a2 an 我們可以得到一些上公升的子串行 ai1,ai2 aik 這裡1 i1 i2 ik n。...
動態規劃 最長上公升子串行
總時間限制 2000ms 記憶體限制 65536kb 描述乙個數的序列bi,當b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列 a1,a2,an 我們可以得到一些上公升的子串行 ai1,ai2,aik 這裡1 i1 i2 ik n。比如,對於序列 1,7,3,5,9,4,8 有它...