時間限制:
3000 ms | 記憶體限制:
65535 kb
難度:4 描述
求乙個字串的最長遞增子串行的長度
如:dabdbf最長遞增子串行就是abdf,長度為4
輸入第一行乙個整數0
輸出輸出字串的最長遞增子串行的長度
樣例輸入
3aaaababc
abklmncdefg
樣例輸出
137
如題目所說,這道題是個求最大單調子串行的題型,這種題之前的部落格也詳細講述過方法,這裡大概回憶一下
乙個陣列,每次在這個陣列裡二分查詢第乙個不小於某個數(根據題目要求可能不同)的的資料的位置,然後替換更新,如果陣列裡的值全部都小於這個數,那麼就把這個數放在陣列最後,陣列的長度增加 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 思路 ...