题意:
给一个数列,求出这个数列最长上升数列的长度。
输入:
5 1 7 2 11 15
6 100 100 100 100 100 100
3 1 2 3输出:
3
1
3
分析:
只找上升的数列,找到破坏上升数列的ID---k,用i - k,找到所有 i - k 中最大的那个即可。
代码:
#include <iostream>
#include <cstdio>
using namespace std;
const int maxn = 100000+5;
int a[maxn];
int main()
{
int n;
cin >> n;
int ans = 0;
int k = 1,i;
for (i = 1; i <= n; i++)
{
scanf("%d",&a[i]);
if (a[i]<=a[i - 1])
{
ans=max(ans,i-k);
k = i;
}
}
ans = max(ans,i-k);
cout <<ans<<endl;
return 0;
}