這個演算法巧妙之處在於利用了大部分之前的計算的資訊。
這裡開了乙個陣列,記錄最長子序列stack,stack[n]記錄長度為n的子串行的最小序列尾數。
舉例:原序列為1,5,8,3,6,7
讀完8以後,棧為1,5,8,此時讀到3,則用3替換5,得到棧中元素為1,3,8,
再讀6,用6替換8,得到1,3,6,再讀7,得到最終棧為1,3,6,7,
最長遞增子串行為長度4。
(例子來自於http://hi.baidu.com/yxdark/blog/item/e1b3e065f3bfd2f8f636543c.html)
最長子序列
最長子序列可以說是剛接觸動態規劃的人經常遇見也不得不解決的問題,最常見的有兩種,一種是最長公共子串行 lcs 還有乙個是最長上公升子串行 lis 今天我就總結下這兩個的做法。一 最長公共子串行 lcs 題目描述 給你兩個陣列,可以是數字的,也可以是字串,我們假設是數字的!舉個例子 x 1,5,6,4...
最長子序列
在做oj題目的時候,經常會用到字串的處理。例如,比較二個字串相似度。這篇文章介紹一下求兩個字串的最長公共子串行。乙個字串的子串行,是指從該字串中去掉任意多個字元後剩下的字元在不改變順序的情況下組成的新字串。最長公共子串行,是指多個字串可具有的長度最大的公共的子串行。include includech...
最長子序列
題 給定乙個長度為n的陣列,找出乙個最長的單調自增子序列 不一定連續,但是順序不能亂 例如 給定乙個長度為8的陣列a,則其最長的單調遞增子串行為,長度為6。思路1 第一眼看到題目,很多人肯定第一時間想到的是lcs。先給陣列排個序形成新陣列,然後再把新陣列和原陣列拿來求lcs,即可得到答案。這種解法很...