動態規劃練習一 01 最長上公升子串行

2021-07-30 06:53:14 字數 882 閱讀 6650

描述

乙個數的序列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)等等。這些子串行中最長的長度是4,比如子串行(1, 3, 5, 8).

你的任務,就是對於給定的序列,求出最長上公升子串行的長度。

輸入輸入的第一行是序列的長度n (1 <= n <= 1000)。第二行給出序列中的n個整數,這些整數的取值範圍都在0到10000。

輸出最長上公升子串行的長度。

樣例輸入

7

1 7 3 5 9 4 8

樣例輸出

4動態規劃問題的關鍵在於找到動態轉移方程,該題為最長上公升子串行問題,可以分別求出以第i個數結束的最長上公升子串行,然後找出分別以這n個數結尾的上公升子串行中的最大值,即為該陣列的最長上公升子串行的長度。源**如下:

#include

using namespace std;

int main()

k++;

b[i]=k;

}max=b[0];

for(i=1;imax)max=b[i];

}cout<

注意陣列初始化時b[0]=1,即當只有乙個數時最長子序列長度為1。

動態規劃練習 01 最長上公升子串行

題目描述 描述乙個數的序列 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,...

最長上公升子串行(練習動態規劃)

題目 給定乙個無序的整數陣列,找到其中最長上公升子串行的長度。示例 輸入 10,9,2,5,3,7,101,18 輸出 4 解釋 最長的上公升子串行是 2,3,7,101 它的長度是 4。思路 義 dp i dp i 為考慮前 ii 個元素,以第 ii 個數字結尾的最長上公升子串行的長度,注意 te...

動態規劃 最長上公升子串行

問題描述 乙個數的序列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 等等...