P1189 30分
P1189 - 最长上升子序列 描述 设有整数序列A [1],A [2],A [3],...,A [米],若存在下标I1 <I2 <I3 <I ... <在,且A [I1] <A [I2 ] <A [i3] <... <A [in],则称为序列A [1],A [2],A [3],...,A [m]中有长度为n的上升子序列A [i1] ],A [i2],A [i3],...,A [in]。 请编程计算指定序列的最长上升子序列长度。
输入 第一行一个正整数N(N <10001),表示序列中整数个数; 第二行是空格隔开的Ñ个整数组成的序列。
产量 一个正整数,表示输入文件中整数序列的最长上升子序列的长度。
样本输入 7
1 7 3 5 9 4 8
样本输出 4
暗示 样例说明: 序列(1,7,3,5,9,4,8)最长上升序列有:(1,3,5,9),(1,3,5,8),(1,3 ,4,9),他们长度为4。
#include<bits/stdc++.h>
using namespace std;
int n,a[10005],ans;
int main(){
cin>>n;
//<int>
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(a[i]<a[i-1]&&a[i]>a[i-2])
{
a[i-1]=a[i];
i--;
n--;
}
else
{
continue;
}
}
for(int i=1;i<=n;i++)
{
if(a[i]<a[i-1])
{
cout<<ans;
return 0;
}
else
{
ans++;
}
}
cout<<endl<<endl<<ans;
return 0;
}