資料結構-最長連續遞增子序列
阿新 • • 發佈:2018-11-25
7-9 最長連續遞增子序列 (20 分)
給定一個順序儲存的線性表,請設計一個演算法查詢該線性表中最長的連續遞增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最長的遞增子序列為(3,4,6,8)。
輸入格式:
輸入第1行給出正整數n(≤105);第2行給出n個整數,其間以空格分隔。
輸出格式:
在一行中輸出第一次出現的最長連續遞增子序列,數字之間用空格分隔,序列結尾不能有多餘空格。
輸入樣例:
15
1 9 2 5 7 3 4 6 8 0 11 15 17 17 10
輸出樣例:
3 4 6 8
#include<iostream> #include<cstring> using namespace std; #define maxn 100005 int a[maxn]; int main() { int n; scanf("%d",&n); for(int i = 0; i < n; i ++) scanf("%d",&a[i]); int count = 0,j = 0,k; for(int i = 1; i < n; i ++) { if(a[i]>a[i-1]) { count++; if(count>j) { j = count; k = i; } } else count = 0; } int start = k-j; int end = k; if(j>0) { int flag = 0; for(int t = start; t <= end; t ++) { if(!flag) { printf("%d",a[t]); flag = 1; } else printf(" %d",a[t]); } } else printf("%d\n",a[0]); }