動態規劃 最長連續遞增子串行的元素個數

2021-10-24 14:46:30 字數 1166 閱讀 1861

例如

vector origin,因為最長連續遞增序列是 。所以最長連續遞增子串行個數是5 。

思路都在**裡面:

#include

#include

#include

#include

using

namespace std;

//動態規劃

//狀態定義

//dp[i] 代表以a[i]結尾的最長遞增子串行長度

//狀態轉移

//if(a[i]>a[i-1]) dp[i] = dp[i] +1;

//else dp[i] = 1;

//初始化

//dp[i] = 1;

//返回值

//求出dp陣列的最大值

//求最長子序列

class

solution

int longestvalue =1;

vector<

int>

dp(origin_v.

size()

,0);

dp[0]

=1;for

(int i=

1;i< origin_v.

size()

;i++

)else

longestvalue =

max(longestvalue, dp[i]);

//這就代表現在這個元素已經加入進去了

}return longestvalue;}}

;int

main()

; cout<<

"最大長度為"

(origin)

;}

思考:如果題目求最長連續遞增子串行,那麼辦呢?

如果我們需要知道 最長連續遞增子串行。例如vector origin,最長連續遞增序列就是 。

但是在現在這個**中,我們至少需要再新增兩個陣列進行儲存。乙個是結果儲存temp2,乙個是每次dp[i]=1的時候,重新儲存的temp1。每次dp[i]=1時,先將temp2與temp1進行比較,將元素個數多的重新複製給temp2 ,然後temp1.clear()。然後重新向temp1中新增新元素。如此反覆。。。。陣列遍歷完,取temp2就可以了。

動態規劃 最長遞增子串行和最長連續遞增子串行

leetcode 674.最長連續遞增序列 題目描述 給定乙個未經排序的整數陣列,找到最長且 連續遞增的子串行,並返回該序列的長度。連續遞增的子串行 可以由兩個下標 l 和 r l r 確定,如果對於每個 l i r,都有 nums i nums i 1 那麼子串行 nums l nums l 1 ...

動態規劃 最長遞增子串行

給出序列 1 2 3 4 2 5 3 4 a 1 1,a 2 2,a 7 3,a 8 4 求其最長的遞增子串行,以上最長遞增子串行為 1 2 3 4 5 問題細分 初始化條件f 1 1,序列只有1個長度即為1 f 2 a 2 與下標小於2的比較,即a 1 比較,a 2 a 1 因此更新f 2 f 1...

動態規劃 最長遞增子串行

給定乙個無序的整數陣列,找到其中最長上公升子串行的長度 例項 輸入 10,9,2,5,3,7,101,18 輸出 4 解釋 最長的上公升子串行為 2,3,7,101 長度為4說明 可能會有多種最長上公升子串行的和,只需要輸出對應長度即可 演算法的時間複雜度應為o n2 首先,dp陣列的定義如下 dp...