描述
乙個數的序列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。
輸出最長上公升子串行的長度。
樣例輸入
71 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 等等...