總時間限制:2000ms
記憶體限制:65536kb
描述:乙個數的序列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
思路:
1.找子問題:求以ak(k=1,2,3.....n)為終點的最長上公升子串行的長度。雖然這個子問題和原問題形式上並不完全一樣,但是只要這n個自問題都解決了,那麼這n個子問題的解中,最大的那個就是整個問題的解。
3.找出狀態轉移方程:maxlen(1)=1;maxlen(k)=max
for(int i=2;i<=n;i++)
for(int j=1;ja[j])
maxlen[i]=max(maxlen[i],maxlen[j]+1);
cout<<*max_element(maxlen+1,maxlen+n+1);
return 0;
}
最長上公升子串行(百練2757)
總時間限制 2000ms 記憶體限制 65536kb 描述 乙個數的序列 bi,當 b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列 a1,a2 an 我們可以得到一些上公升的子串行 ai1,ai2 aik 這裡1 i1 i2 ik n。比如,對於序列 1,7,3,5,9,4,8...
百練 2757 最長上公升子串行
總時間限制 2000ms 記憶體限制 65536kb 描述乙個數的序列 bi,當 b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列 a1,a2 an 我們可以得到一些上公升的子串行 ai1,ai2 aik 這裡1 i1 i2 ik n。比如,對於序列 1,7,3,5,9,4,8 ...
百練 2757 最長上公升子串行
解題思路 給出一列數,求其最長遞增子串行的長度max 從特殊到一般來做,當給出的數列是單調遞增數列時,max n 所以當亂序時,max n 則我們要求max的值,只需要求和按照公升序排好順序的的最長公共子串行 2757 最長上公升子串行 描述乙個數的序列bi,當b1 b2 bs的時候,我們稱這個序列...