给定一个顺序存储的线性表,请设计一个算法查找该线性表中最长的连续递增子序列。例如,(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 <vector> using namespace std; vector <int> v; int main() { int n; cin>>n; for(int i=0;i<n;i++) { int t; cin>>t; v.push_back(t); } int maxsize=0; int maxi; for(int i=0;i<v.size();i++) { int cnt=0; for(int j=i+1;j<v.size();j++) { if(v[i]<v[j]&&v[j]>v[j-1]) cnt++; else{ break; } } if(cnt>maxsize) { maxsize=cnt; maxi=i; } } for(int i=maxi;i<=maxi+maxsize;i++) { cout<<v[i]; if(i!=maxi+maxsize ) { cout<<' '; } } }
结果:
标签:24,--,递增,int,maxi,序列,最长 From: https://www.cnblogs.com/daniel350-wang/p/17344138.html