求最長上公升子串行

2021-08-03 14:41:24 字數 692 閱讀 1878

通常求最長上公升子串行的做法是兩層for迴圈,這裡從別人那裡學會了另一種sao操作~~~

#includeusing namespace std;

int n;

int a[500005];

int up[500005];//儲存上公升的長度

int down[500005];//下降的長度

int u[500005];//最大化上公升子串行

int d[500005];//最大化下降子串行

//這裡所說的最大化是指使得整個序列的跨度變得最小,

//也就是相鄰兩個數之間的差最小,這樣才能有利於後面的數進行最大化長度的計算

int main()

intlen =0;

u[len++] = a[1];

up[1] =0;

for(int i=2; i<=n; i++)

else

}len =0 ;

d[len++] = a[n];

down[n] =0;

for(int i=n-1; i; i--)

else

}int ans =0;

for(int i=1; i<=n; i++)

printf("%d\n",ans*2

+1);

}return

0;}

求最長上公升子串行

q 有乙個長為n的數列a0,a1,an 1。求出這個序列中最長的上公升子串行的長度。上公升子串行指的是對於任意的i大致思路是這樣的,初始設定乙個最大長度maxlength為0,從數列的第一項開始遍歷,只要當前項大於前一項則加入,否則繼續遍歷,直至此次遍歷結束。然後與maxlength做對比,如果大於...

求最長上公升子串行

由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...

最長上公升子串行求長度

普通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...