最長遞增(遞減)子串行

2021-08-08 17:09:56 字數 987 閱讀 4438

最長遞增序列

#include #include #include #include #include #include using namespace std;

int main()

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

for(int j = 0; j < i; j ++) //第i個跟前i-1個 嘗試組成序列 選擇能組成最長的的

if(a[i] >= a[j])

d[i] = max(d[i],d[j] + 1);

int max_= 0;

for(int i = 0; i < n; i ++) //拿出最長的來 也可以放在上面那個外層for迴圈裡

if(max_ < d[i])

max_= d[i];

cout《同時,最長遞增子串行的長度,也是求改序列 最少遞減序列的個數,看的這個題,題意是求最少遞減序列個數,按上邊程式求最長遞增序列長度就ok

problem description

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

怎麼辦呢?多搞幾套系統唄!你說說倒蠻容易,成本呢?成本是個大問題啊.所以俺就到這裡來求救了,請幫助計算一下最少需要多少套攔截系統.

input

輸入若干組資料.每組資料報括:飛彈總個數(正整數),飛彈依此飛來的高度(雷達給出的高度資料是不大於30000的正整數,用空格分隔)

output

對應每組資料輸出攔截所有飛彈最少要配備多少套這種飛彈攔截系統.

sample input

8 389 207 155 300 299 170 158 65

sample output

2

最長遞增(遞減)子串行的貪心解法

從開始接觸到每到求最長遞增子串行都是用的動態規劃方法,要開兩個陣列。include stdio.h intmain printf d n b n 1 if b n 1 m puts good else puts bad return0 直到昨天晚上,隊員和我討論,我發現它使用的貪心求最長遞增子串行,...

最長遞減子串行

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

最長遞減子串行

最長遞減子串行 如果array i aarray j 第i個數的最長遞減子串行的長度 等於 i 1到最後乙個數的最長遞減子串行的長度 加 1 否則 最長遞減子串行的長度就是1 最後乙個數的最長遞減子串行的長度等於1,最開始的時候dp i 的值都為1 然後倒著求最長遞減子串行 如 3,8,7,5,4,...