SDUT 動態規劃 上公升子串行

2021-10-04 13:46:33 字數 945 閱讀 3542

上公升子串行

poblem description

乙個只包含非負整數的序列bi,當b1 < b2 < … < bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列,我們可以得到一些上公升的子串行,這裡1 ≤ i1 < i2 <…< ik ≤ n。例如:對於序列,有它的一些上公升子串行,如, 等等。這些子串行中序列和最大的是子串行,它的所有元素的和為18。

對於給定的乙個序列,求出它的最大的上公升子串行的和。

注意:最長的上公升子串行的和不一定是最大的哦。

input

輸入包含多組測試資料,對於每組測試資料:

輸入資料的第一行為序列的長度 n(1 ≤ n ≤ 1000),

第二行為n個非負整數 b1,b2,…,bn(0 ≤ bi ≤ 1000)。

output

對於每組測試資料,輸出其最大上公升子串行的和。

sample input

71 7 3 5 9 4 8

sample output

18解題思路與最長公共子串行問題相似,但是dp陣列用來記錄和;

dp[i]表示以第i個元素為終的上公升序列中和的最大值;

k用來標記最大值的下標;

#include

using

namespace std;

#define max(x,y) (x>y)?x:y

int a[

1010];

int dp[

1010];

intmain()

}}printf

("%d\n"

,dp[k]);

}return0;

}

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

最長上公升子串行 poblem description 乙個數的序列bi,當b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列 a1,a2,an 我們可以得到一些上公升的子串行 ai1,ai2,aik 這裡1 i1 i2 ik n。比如,對於序列 1,7,3,5,9,4,8 有它的...

sdut 上公升子串行

上公升子串行 time limit 1000 ms memory limit 65536 kib problem description 乙個只包含非負整數的序列bi,當b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列,我們可以得到一些上公升的子串行,這裡1 i1 i2 ik n...

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

乙個數的序列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 等等。這些子串...