【问题描述】
给出一个由n个正整数组成的数组。您的任务是找到给定数组的递增子数组的最大长度。
递增子数组由数组中若干个连续元素组成,且子数组中的每个元素严格地大于前一个元素。
【输入形式】
第一行为一个正整数n(1≤n≤105),表示数组元素的个数
第二行给出n个正整数a1 a2......an (1≤ai≤109) ,整数之间使用空格分隔
【输出形式】
输出最大递增子数组的长度
【样例输入】
5 1 7 2 11 15
【样例输出】
3
【样例说明】
1 7可以构成一个递增子数组
2 11 15可以构成一个递增子数组
所以本样例的输出结果为3
说明:考虑到一些特殊情况需要特殊处理,稍微有些算法思想
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char** argv) {
//最长连续递增子序列问题
int n;
cin>>n;
int a[n];
int num=0;
for(int i=0;i<n;i++)
{cin>>a[i];
}
int s=0,e=1;
for(int i=0;i<n-1;i++)
{if(a[i]<a[i+1])
{e++;//正常增长的情况
}
else {
if(num<(e-s))
num=e-s;
s=i+1;e=i+2;
}
if(i==n-2)
{
if(num<(e-s))
num=e-s;
}
}
cout<<num;
return 0;
}