麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

最長上升子序列(LIS)的一點理解

2019-11-14 09:23:28
字體:
供稿:網(wǎng)友

問題描述

給定n個整數(shù)A1,A2,…,An,按從左到右的順序選出盡量多的整數(shù),組成一個上升子序列。比如從序列1,6,2,3,7,5中,可以選出上升子序列1,2,3,5,也可以選出1,6,7,但前者更長。選出的上升子序列中相鄰元素不能相等。

問題分析

設(shè)d(i)為以編號i結(jié)尾的上升子序列的長度。那么對于上述序列1,6,2,3,7,5來說: d(1)=1 d(2)=2 d(3)=2(因為2<6,所以子序列為1,2) d(4)=3(子序列為1,2,3) d(5)=4(子序列為1,2,3,7) d(6)=4(子序列為1,2,3,5) 從上述對d(i)值的枚舉可以看出,d(i)=max{0,d(j)|j<i,Aj<Ai}+1=max{d(i)}(A為序列),很顯然可以看出,當(dāng)前算法的時間復(fù)雜度為O(n^2),那么能不能對這個算法進(jìn)行優(yōu)化呢,顯然是可以的.

算法優(yōu)化

假設(shè)已經(jīng)計算得到a,使得d(a)=t,且Aa為d值為t的序列中的最小值,那么在后續(xù)的序列中,顯然只要找到一個數(shù)字編號k,使得Ak>Aa,那么就能滿足上升子序列的條件,且這樣不會丟失最優(yōu)解。證明如下: 設(shè)d(a)=d(b)=t,且Aa為d值為t的序列中的最小值,那么由假設(shè)可知Aa≤Ab,那么在后續(xù)序列中,找到一個數(shù)字編號k,因為Ak>Aa,但是因為Ak不一定大于Ab,所以如果舍棄Aa,顯然可能會舍棄最優(yōu)解,但如果舍棄Ab,確不一定會丟失最優(yōu)解。綜上,min{j|d(j)=i)為當(dāng)前選擇的最優(yōu)解. 現(xiàn)在有了上述的結(jié)論,那么我可以設(shè)g(i)為d值為i的最小狀態(tài)編號,那么一定有g(shù)(1)≤g(2)≤….≤g(n),所以現(xiàn)在只需要根據(jù)二分查找,找到一個數(shù)字編號k,使得g(k)≥Ai,更新d(i)=k,此時Ai<g(k),而d(i)=k,所以更新g(k)=Ai.代碼如下:

這里寫代碼片 for(int i=1;i<=n;i++) g[i]=INF; for(int i=0;i<n;i++){ int k=lower_bound(g+1,g+n+1,A[i]); d[i]=k; g[k]=A[i]; }


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚洲精品久久久久久久久久久 | 国产成人综合在线视频 | 一本色道久久99精品综合蜜臀 | 欧美国产一区二区三区 | 国产色片在线观看 | 国产在线免费 | 中文字幕网站在线 | 污黄视频在线播放 | 欧美一级免费高清 | 黄污网站在线观看 | 欧美成人精品不卡视频在线观看 | 在线成人www免费观看视频 | 亚洲第一成人在线 | 亚洲欧美aⅴ | 成人三级免费电影 | 怦然心动50免费完整版 | 激情国产视频 | 中文字幕观看 | 最新中文字幕日本 | 中文字幕四区 | 日韩一级免费 | 国产亚洲精品久久久久婷婷瑜伽 | 日本a在线观看 | 在线播放污 | 老a影视网站在线观看免费 国产精品久久久久久久久久尿 | 亚洲网站一区 | 天天草天天干天天射 | 日本网站一区二区三区 | 免费在线国产 | a一级黄 | 午夜a狂野欧美一区二区 | 久久无毛| 欧美另类综合 | 中文字幕在线一 | 国产精品av久久久久久网址 | 免费观看一级黄色片 | 久久综合精品视频 | 欧美精品久久久久久久久久 | 久久午夜神器 | 成人区一区二区三区 | 成人免费毛片在线观看 |