最長有序子串行

2021-07-15 11:01:41 字數 754 閱讀 9227

acm模版

/*

* 遞增(預設)

* 遞減

* 非遞增

* 非遞減 (1)>= && < (2)< (3)>=

*/const

int maxn = 1001;

int a[maxn], f[maxn], d[maxn]; // d[i] 用於記錄 a[0...i] 以 a[i] 結尾的最大長度

int bsearch(const

int *f, int size, const

int &a)

else

if (a < f[mid])

else

}return -1;

}int lis(const

int *a, const

int &n)

else

if (a[i] > f[size - 1]) // (3)

else

f[j] = a[i];

d[i] = j + 1;

}return size;

}int main()

printf("%d\n", lis(a, n)); // 求最大遞增 / 上公升子串行(如果為最大非降子串行,只需把上面的注釋部分給與替換)

}return

0;}

2017.4.12 23:59 **注釋修正 以 a[i] 結尾

最長有序子串行 經典DP

給一串資料i0 1234 5678 num i 14 7258 369 來得到其對應位上的資料的最長有序子串行的長度l i0 1234 5678 num i 14 7258 369f i 12 3234 345 這是個經典的dp問題。在這裡我們利用f i 的陣列 來儲存其之前資料的最長有序子串行 進...

動態規劃系列二(最長有序子串行)

1 問題描述 乙個數的序列bi,當b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列 a1,a2,an 我們可以得到一些上公升的子串行 ai1,ai2,aik 這裡1 i1 i2 ik n。比如,對於序列 1,7,3,5,9,4,8 有它的一些上公升子串行,如 1,7 3,4,8 ...

最長上公升子串行,最長不下降子串行

最長上公升子串行 include includeusing namespace std const int n 23333 12 int dp n a n int n int binarysearch int k,int len else if k dp mid else mid l r 1 ret...