最長子序列

2022-02-21 05:52:06 字數 727 閱讀 6000

在給定的序列中尋找最長的無重複子序列;

利用mapobject標記每個數字的序號,如果這個數字重複過,那麼就能確定他們之間的乙個序列長度,然後起點更新到出現的重複的點上,

從這個點開始向後再次找無重複序列,然後每次對比它的長度和上一次確定的序列的長度,如果新序列的長度大於前乙個長度就更新它,並且更新終點。

1 #include2 #include3

using

namespace

std;

4const

int n=120;5

intarray[n];

6int

starti,endi,start;

7int

main()817

int l=0

,temp;

18 starti=endi=start=1;19

for(int i=1;i<=n;i++)

2026

else

if(l//

如果在新的起點到現在點距離大於原來的長度,就更新長度和終點

2731 my_map[array[i]]=i;32}

33 cout34 cout<<"

startpoint:

"(endi-l)<<"

endpoint:

"36return0;

37 }

最長子序列

最長子序列可以說是剛接觸動態規劃的人經常遇見也不得不解決的問題,最常見的有兩種,一種是最長公共子串行 lcs 還有乙個是最長上公升子串行 lis 今天我就總結下這兩個的做法。一 最長公共子串行 lcs 題目描述 給你兩個陣列,可以是數字的,也可以是字串,我們假設是數字的!舉個例子 x 1,5,6,4...

最長子序列

在做oj題目的時候,經常會用到字串的處理。例如,比較二個字串相似度。這篇文章介紹一下求兩個字串的最長公共子串行。乙個字串的子串行,是指從該字串中去掉任意多個字元後剩下的字元在不改變順序的情況下組成的新字串。最長公共子串行,是指多個字串可具有的長度最大的公共的子串行。include includech...

最長子序列

題 給定乙個長度為n的陣列,找出乙個最長的單調自增子序列 不一定連續,但是順序不能亂 例如 給定乙個長度為8的陣列a,則其最長的單調遞增子串行為,長度為6。思路1 第一眼看到題目,很多人肯定第一時間想到的是lcs。先給陣列排個序形成新陣列,然後再把新陣列和原陣列拿來求lcs,即可得到答案。這種解法很...