題目描述
乙個數列ai如果滿足條件a1 < a2 < … < an,那麼它是乙個有序的上公升數列。我們取數列(a1, a2, …, an)的任一子串行(ai1, ai2, …, aik)使得1 <= i1 < i2 < … < ik <= n。例如,數列(1, 7, 3, 5, 9, 4, 8)的有序上公升子串行,像(1, 7), (3, 4, 8)和許多其他的子串行。在所有的子串行中,最長的上公升子串行的長度是4,如(1, 3, 5, 8)。
現在你要寫乙個程式,從給出的數列中找到它的最長上公升子串行。
輸入輸入包含兩行,第一行只有乙個整數n(1 <= n <= 1000),表示數列的長度。
第二行有n個自然數ai,0 <= ai <= 10000,兩個數之間用空格隔開。
輸出輸出只有一行,包含乙個整數,表示最長上公升子串行的長度。
樣例輸入
71 7 3 5 9 4 8
樣例輸出
4
#includeusing namespace std;
const int maxn=1010;
int main()
int ans=-1;
for(int i=0;ia[j] && d[i]d[i]?ans:d[i];
} cout
}
最長上公升子串行問題
網上一大堆,說說思路吧,以4 2 6 3 1 5為例 逐個讀入數字,4 此時可能的佇列長度為1,最大值為4 4 2 由於2 4,此時佇列長度為1,最大值為2 4 2 6 6 2,佇列有2個,乙個長度為1,最大為2,乙個長度為2,最大為6 4 2 6 3 3 6,3 2,佇列有2個,乙個長度為1,最大...
最長上公升子串行問題
題型 poj 1631 問題描述 給出乙個陣列,求最長上公升子串行的長度。方法一 時間複雜度n 1000 思路 邊輸入邊處理,每次往陣列裡存,就替換這個數 就是所謂的二分法 include include include include using namespace std int a 40000...
問題 A 最長上公升子串行
乙個數列ai如果滿足條件a1 a2 an,那麼它是乙個有序的上公升數列。我們取數列 a1,a2,an 的任一子串行 ai1,ai2,aik 使得1 i1 i2 ik n。例如,數列 1,7,3,5,9,4,8 的有序上公升子串行,像 1,7 3,4,8 和許多其他的子串行。在所有的子串行中,最長的上...