通常求最長上公升子串行的做法是兩層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...