動態規劃例題 最大上公升自序列

2021-06-03 19:02:44 字數 959 閱讀 7748

問題描述

乙個數的序列 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/************************

*總共有n個數,求第n個數的最大上公升自序列,求出第n-1然後+1;

* 求第三個數的最大上公升自序列,就求出第二個來再+1

*****************************/

#include #includeconst int maxn=1000;

int b[maxn],amaxlen[maxn+10];

int main(int argc, char *argv)

{ int n;

scanf("%d",&n);

for (int i=1;i<=n;i++)

scanf("%d",&b[i]);

amaxlen[1]=1;

for (int i=2;i<=n;i++)

{int ntmp=0;

for (int j=1;jb[j])

{if(ntmp

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

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

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

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

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

最大上公升子串行 動態規劃 s 給定陣列,輸出陣列的最大上公升子串行。輸入 兩行測試資料 第一行代表陣列元素個數 第二行輸入陣列中的整數 輸出 輸出最大上公升子串行的長度 輸入樣例 81 3 4 2 7 9 6 8 輸出樣例 5 一和 二思路一樣,都是從陣列的第i 1 i n 位置開始尋找最大上公升...