快樂風男 最長上公升子串行求個數及其下標

2021-10-16 05:21:01 字數 694 閱讀 4617

這道題就是求最長上公升子串行,就是多了個尋找下標編號並要求下標字典序最小,是下標不是子串行;

#include

#include

#include

#include

#include

using

namespace std;

const

int maxn=

1e5+5;

int a[maxn]

,len[maxn]

,dp[maxn]

,res[maxn]

;//a代表原始陣列,len為當前最長子序列的個數,

//dp只是用來輔助記錄大小的,不是真正的所選序列

//res為最終答案下標的最小序列

int cnt;

intmain()

else

}memset

(res,0,

sizeof

(res));

for(

int i=n;i>=

1;i--

)//從後往前保證下標和最小

cout<

for(

int i=

1;i) cout<

<

<

" ";

cout<

<

}

求最長上公升子串行

q 有乙個長為n的數列a0,a1,an 1。求出這個序列中最長的上公升子串行的長度。上公升子串行指的是對於任意的i大致思路是這樣的,初始設定乙個最大長度maxlength為0,從數列的第一項開始遍歷,只要當前項大於前一項則加入,否則繼續遍歷,直至此次遍歷結束。然後與maxlength做對比,如果大於...

求最長上公升子串行

由n個不相同的整數組成的數列,記為 a 1 a 2 a n 且a i a j i j 例如,3,18,7,14,10,12,23,41,16,24.若存在i1 i2 3 e且有a i1 2 e 則稱其為長度為e的不下降子串行。如上例中3,18,23,24就是乙個長度為4的不下降子串行,同時也有3,7...

求最長上公升子串行

通常求最長上公升子串行的做法是兩層for迴圈,這裡從別人那裡學會了另一種sao操作 includeusing namespace std int n int a 500005 int up 500005 儲存上公升的長度 int down 500005 下降的長度 int u 500005 最大化上...