乙個序列a=,找出它的最長上公升子串行的個數,很明顯是4個,可以是,或者。他有兩種實現的方法:
第一種是時間複雜度為o(n^2)的演算法:
#include
#include
#include
#include
using namespace std;
intmain()
;int n=
sizeof
(a)/
sizeof
(int);
int b[
sizeof
(a)/
sizeof
(int)]
; b[0]
=1;for
(int i=
1;iint maxb=0;
for(
int i=
0;i) cout << maxb << endl;
return0;
}------
----
----
----
----
----
----
----
----
----
----
----
----
----
----
-------
第二種是時間複雜度為o
(nlogn)的演算法:
#include
#include
#include
#include
using namespace std;
intcheck
(int
&it,
int*a,
int l,
int r)
}int
main()
;int b[
sizeof
(a)/
sizeof
(int)]
;int n=
sizeof
(a)/
sizeof
(int);
b[0]=a[0]
;int len=1;
int j=0;
for(
int i=
1;i) cout << len << endl;
for(
int i=
0;i)return0;
}
最長上公升子串行的兩種解法
問題描述 乙個數的序列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 等等...
最長上公升子串行(兩種方法)
設有整數序列b1,b2,b3,bm,若存在下標i1第一行n 第二行 整數序列 10318 7141012 2341 1624最大長度n和所有長度為n的序列個數 6把每個數與前面的數組成的最長上公升子串行的長度記錄在一維陣列中。記錄的數就是前面小於它的數中最長上公升子串行的長度最長的數 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 等等...