動態規劃 陣列中最長遞減子串行

2021-06-09 01:28:46 字數 1191 閱讀 1082

求乙個陣列的最長遞減子串行比如的最長遞減子串行為

分析:典型的動態規劃題目,對每乙個數計算由它開始的最大遞減子串行的個數,並存放到一張對映表中。例如對陣列a[n]有

……然後利用求得的對映表及最大子串行個數獲取原陣列中的元素。對於我們求得最大子串行個數為nmaxlen=5,表為ptable=。那麼ptable中以此找出nmaxlen,nmaxlen-1,…,1對應的原陣列的值即為最大遞減子串行。對應的為.複雜度為o(n2)

**如下

[cpp]view plain

copy

#include 

#include 

using

namespace

std;  

intfun(

intain,

intptable,

intnlen)  

}  ptable[i] = 1+nmax;  

nmaxlen = nmaxlen}  

return

nmaxlen;  

}  void

printmaxsubsequence(

intain, 

intptable, 

intnmaxlen, 

intnlen)  

}  cout <

}  

測試**如下:

[cpp]view plain

copy

intmain()  

;  int

nlen = 

sizeof

(ain)/

sizeof

(int

);  

int* ptable = 

newint

[nlen];  

memset(ptable,0,nlen*sizeof

(int

));  

intnmaxlen = fun(ain,ptable,nlen);  

cout <

printmaxsubsequence(ain,ptable,nmaxlen,nlen);  

delete

ptable;  

return

0;  

}  

動態規劃 陣列中最長遞減子串行

求乙個陣列的最長遞減子串行比如的最長遞減子串行為 分析 典型的動態規劃題目,對每乙個數計算由它開始的最大遞減子串行的個數,並存放到一張對映表中。例如對陣列a n 有 然後利用求得的對映表及最大子串行個數獲取原陣列中的元素。對於我們求得最大子串行個數為nmaxlen 5,表為ptable 那麼ptab...

動態規劃之最長非遞減子串行

在乙個數字序列中,找到乙個最長的非連續子串行,使得這個子串行是不下降 非遞減 現有序列a 則a的最長不下降子串行是。如果有多個最長序列,只需選數字順位靠後的序列從大到小輸出。輸入2行 第一行乙個整數n,表示有n個整數的序列要輸入,n 1000 第二行共有n個整數。輸出最長的不下降子串行,只需選數字順...

最長遞減子串行

最長遞增子串行算過很多了?那我們這次來求個遞減的試試 第一行為乙個整數t,代表有t組測試資料。每組測試資料為乙個只含有字母和數字的字串 字串長度不超過1000 對於每組測試資料,輸出其最長遞減子串行的長度 要求以ascii碼進行比較且嚴格遞減 程式源 include using namespace ...