動態規劃 最長上公升子串行之基礎(經典演算法 n 2)

2021-07-27 21:28:42 字數 953 閱讀 8696

解題心得:

1、注意動態轉移方程式,d[j]+1>d[i]>?d[i]=d[j]+1:d[i]

2、動態規劃的基本思想:將大的問題化為小的,再逐步擴大得到答案,但是小問題的基本性質要和大的問題相同。

3、這是動態規劃的經典方程式,但是耗時較多,在資料較大的時候會出現超時的情況。

題目:1180: 最長上公升子串行之基礎

time limit: 1000 ms memory limit: 65536 kb

total submit: 166 accepted: 79 page view: 551

submit status discuss

description

給出乙個由n個數組成的序列x[1..n],找出它的最長單調上公升子串行的長度。即找出最大的長度m和a1,

a2……,am,使得 a1 < a2 < … … < am 且 x[a1] < x[a2] < … … < x[am]。

input

先輸入乙個整數t(t<=200),代表測試組數。

每組資料先輸入乙個n,代表有n個數(1<=n<=1000).

輸入n個正整數,a1,a2,a3…..an(0<=ai<=100000).

output

每組輸出乙個整數,代表最長的長度。

sample input

1 7

1 7 3 5 9 4 4

8 sample output

4

#include

int main()

for(int i=0;i1;

for(int j=0;jif(num[i] > num[j] && d[j] + 1 > d[i])//關鍵:判斷上公升則第i個肯定比第i之前的更大,d【i】則為之前的+1中的最大的那個}}

printf("%d\n",len);

}}

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

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