17 單調遞增最長子序列

2021-07-04 10:42:39 字數 760 閱讀 3971

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:4 描述

求乙個字串的最長遞增子串行的長度

如:dabdbf最長遞增子串行就是abdf,長度為4

輸入第一行乙個整數0

輸出輸出字串的最長遞增子串行的長度

樣例輸入

3

aaaababc

abklmncdefg

樣例輸出

1

37

如題目所說,這道題是個求最大單調子串行的題型,這種題之前的部落格也詳細講述過方法,這裡大概回憶一下

乙個陣列,每次在這個陣列裡二分查詢第乙個不小於某個數(根據題目要求可能不同)的的資料的位置,然後替換更新,如果陣列裡的值全部都小於這個數,那麼就把這個數放在陣列最後,陣列的長度增加 1 ,就這樣下去,雖然最後求出的序列不是想要的最大遞增子串行,但是長度是所需要的長度,因為按這樣的方法下去,只有遇到更長的單調子串行才會更新最大長度,也就可以更新出最大的長度,二分查詢在有序陣列裡使用比較方便,效率高,可以直接呼叫函式,不過個人覺得自己構造也是可以的,這樣還可以增加自己對程式的掌控,畢竟自己寫的函式,比較好控制些,不過推薦使用函式....比較方便吧

#include#includechar x[10005],y[10005];

int len;

int search(char s)//二分查詢函式

{ int l=0,r=len,mid;

while(l

NYOJ 17 單調遞增最長子序列

寫了兩個版本,一直找不出第乙個程式 錯了。先放著,回頭再來繼續改 f i max 1 0 j include includeusing namespace std define n 10005 char str n int f n int main if f i max2 max2 f i prin...

nyoj 17 單調遞增最長子序列

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 求乙個字串的最長遞增子串行的長度 如 dabdbf最長遞增子串行就是abdf,長度為4 輸入第一行乙個整數0 輸出輸出字串的最長遞增子串行的長度 樣例輸入 3 aaaababc abklmncdefg 樣例輸出 1 3 簡單動規...

nyoj 17 單調遞增最長子序列

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 求乙個字串的最長遞增子串行的長度 如 dabdbf最長遞增子串行就是abdf,長度為4 輸入第一行乙個整數0 輸出輸出字串的最長遞增子串行的長度 樣例輸入 3 aaaababc abklmncdefg 樣例輸出 1 37 思路 ...