题目描述
给定一个顺序存储的线性表,设计算法查找该线性表中最长的连续递增子序列。例如(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8).
输入格式
序列长度 n (1<=n<=1e6)
序列元素(整数)a1,a2.....an (1<=ai<=1e9)
输出格式
最长连续递增子序列(若有多个等长最长连续递增子序列,输出位置靠前的)。
输入样例
15
1 9 2 5 7 3 4 6 8 0 11 15 17 17 10
输出样例
3 4 6 8
代码展示
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int a[1000000];
for(int i=0;i<n;i++){
cin>>a[i];
}
//input
int loc1=0;//用于记录最长递增序列起始下标
int i=0,j=0;
int maxlen=1;
while(j<n){
while(a[j]<a[j+1]){
j++;
}
if(j-i+1>maxlen){
maxlen=j-i+1;
loc1=i;
}
j++;
i=j;
}
//check
for(int k=0;k<maxlen;k++){
if(k) cout<<' '<<a[loc1+k];
else cout<<a[loc1+k];
}
//output
return 0;
}

286

被折叠的 条评论
为什么被折叠?



