最長子序列的問題求解

2021-06-03 18:29:38 字數 885 閱讀 7196

給你一組資料

比如1 7 4 5 6 8 9

7個資料

求出這一組資料中的最長公升序子串行的長度

為了這個問題糾結了很久,由於自己沒有學習什麼動態規劃

所以看了別人的說法也是沒法完全明白。

為了簡化問題,只求長度

換個思路:

假設我們先定下來最長的子串行的末端,比如說是1

那麼初始的原則就是只有乙個1,a[1]

長度顯然為1,

我們可以求出以每乙個資料比如1,7,4,5分別為終端的子串行的長度

怎麼去理解呢

繼續舉例;

我們在有看以7為終端的時候,我們只需判斷在1的基礎上能不能加上7,可以的話就說明以7為終端的就是以1為終端的長度加1,否則就是以7為終端和以1為終端的長度是一樣的

接下來就是以4為終端的情況,就是判斷是否能夠在以7為終端的序列上面加上4了,是否可以在1的基礎上加4,當然求的這個數要是在一系列裡面最大的哦。依次類推

就可以求的這乙個長度啦。

#include

#define max 100   

int a[max];   

int maxnumber[max];  

int main()   

maxnumber[i]=tmp+1;   

}   

maxline=0;   

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

if(maxnumber[i]>maxline)   

maxline=maxnumber[i];   

printf("%d\n",maxline); 

while(2);

}ps:

文章僅僅是自己做一些記錄用,如能博您一閱就深感榮幸,如有問題,歡迎指出,小弟基礎比較差。

最長子段問題求解

問題描述 乙個n個整數的陣列 a 0 a n 1 求這個陣列的子陣列的最大和。舉例 陣列 a 1,2,3,5,3,2 返回 8 解法一 窮舉法 窮舉出所有的子陣列,分別求和,最後選出最大值 n個元素的組合有n n 1 種,對每種組合求和需要c次,其中c為該組合元素數 因而該演算法複雜度為o n2 o...

最長子序列問題

引子 洛谷p1020,飛彈攔截 問題描述 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所...

最長子序列

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