最長上公升子串行問題

2021-06-22 11:48:20 字數 629 閱讀 3742

**網上一大堆,說說思路吧,以4 2 6 3 1 5為例

逐個讀入數字,

4 | 此時可能的佇列長度為1,最大值為4

4 2 | 由於2 < 4,此時佇列長度為1,最大值為2

4 2 6 | 6 > 2,佇列有2個,乙個長度為1,最大為2,乙個長度為2,最大為6

4 2 6 3 | 3 < 6, 3 > 2,佇列有2個,乙個長度為1,最大為2,乙個長度為2,最大為3

4 2 6 3 1 | 1 < 2, 1 < 3,佇列有2個,乙個長度為1,最大為1,乙個長度為2,最大為3

4 2 6 3 1 5 | 5 > 1,5 > 3,佇列有3個,乙個長度為1,最大為1,乙個長度為2,最大為3,乙個長度為3,最大為5(分別是1 | 2,3 | 2,3,5)

走到頭了,所以輸出3,此時是乙個最壞情況下n^2的演算法,但如果每讀入乙個新的數時,不是逐個比較,而是利用二分法,

#include#includeusing namespace std;

#define maxn 50

#define inf 100

int a[maxn];

int d[maxn];

int g[maxn];

int main()

cout<

最長上公升子串行問題

題型 poj 1631 問題描述 給出乙個陣列,求最長上公升子串行的長度。方法一 時間複雜度n 1000 思路 邊輸入邊處理,每次往陣列裡存,就替換這個數 就是所謂的二分法 include include include include using namespace std int a 40000...

問題 A 最長上公升子串行

題目描述 乙個數列ai如果滿足條件a1 a2 an,那麼它是乙個有序的上公升數列。我們取數列 a1,a2,an 的任一子串行 ai1,ai2,aik 使得1 i1 i2 ik n。例如,數列 1,7,3,5,9,4,8 的有序上公升子串行,像 1,7 3,4,8 和許多其他的子串行。在所有的子串行中...

問題 A 最長上公升子串行

乙個數列ai如果滿足條件a1 a2 an,那麼它是乙個有序的上公升數列。我們取數列 a1,a2,an 的任一子串行 ai1,ai2,aik 使得1 i1 i2 ik n。例如,數列 1,7,3,5,9,4,8 的有序上公升子串行,像 1,7 3,4,8 和許多其他的子串行。在所有的子串行中,最長的上...