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

2022-05-05 21:57:10 字數 684 閱讀 3580

從開始接觸到每到求最長遞增子串行都是用的動態規劃方法,要開兩個陣列。

**

#include

<

stdio.h

>

intmain()}//

printf("%d\n",b[n-1]);

if(b[n-1

]>=

m)puts(

"good");

else

puts(

"bad");

}return0;

}

直到昨天晚上,隊員和我討論,我發現它使用的貪心求最長遞增子串行,空間和時間複雜度都比動態規劃的方法小。

方法:j=0;i從0到n-1迴圈,每次到a[i]>a[j],就讓a[j+1]=a[i],j+=1; 如果a[i]<=a[j],就在a[0]從a[i-1]找到第乙個比a[i]小的數替換為a[i]。

到迴圈結束,就j++的值就是求得最長遞增子串行的結果。

**

#include

<

stdio.h

>

intmain()}if

(++j>=

m)puts(

"good");

else

puts(

"bad");

}return0;

}

上面**的對應題目是zzuli上的跳高的蝸牛。

最長遞增(遞減)子串行

最長遞增序列 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 ...

最長遞減子串行

最長遞增子串行算過很多了?那我們這次來求個遞減的試試 第一行為乙個整數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,...