q:有乙個長為n的數列a0,a1,...,an-1。求出這個序列中最長的上公升子串行的長度。上公升子串行指的是對於任意的i大致思路是這樣的,初始設定乙個最大長度maxlength為0,從數列的第一項開始遍歷,只要當前項大於前一項則加入,否則繼續遍歷,直至此次遍歷結束。然後與maxlength做對比,如果大於maxlength,則將當前長度置為最大長度。然後繼續從陣列的第二項開始遍歷,重複上述步驟。很簡單,利用乙個雙迴圈即可,處理**:
int maxlength(int arr,int n)
return maxlength;
}
樣例輸入:
數列->7,19,2,12,30,7,3,56,132,1,90,88,94,345,500
最大長度為7 (由7,19,30,56,132,345,500構成). 複雜度o(n2)
歡迎提出更高效簡潔的演算法。
求最長上公升子串行
由n個不相同的整數組成的數列,記為 a 1 a 2 a n 且a i a j i j 例如,3,18,7,14,10,12,23,41,16,24.若存在i1 i2 3 e且有a i1 2 e 則稱其為長度為e的不下降子串行。如上例中3,18,23,24就是乙個長度為4的不下降子串行,同時也有3,7...
求最長上公升子串行
通常求最長上公升子串行的做法是兩層for迴圈,這裡從別人那裡學會了另一種sao操作 includeusing namespace std int n int a 500005 int up 500005 儲存上公升的長度 int down 500005 下降的長度 int u 500005 最大化上...
最長上公升子串行求長度
普通dp 複雜度o 2 1 include 2 using namespace std 34 const int n 1010 5 inta n dp n n 67 intmain 1819 int res 0 20 for int i 1 i n i 21 res max res,dp i 222...