输入:
7
1 7 3 5 9 4 8
输出:
4
方法:
动态规划
一维状态转移方程
dp[i]表示以a[i]作为结束时,最长的长度,算dp[i]是要根据i以前的dp信息
代码:
#include<iostream>
#include<string.h>
using namespace std;
int dp[1010];
int N;
int a[1010];
int main()
{
while(cin>>N){
int ma = -1;//max
for(int i=0;i<N;i++)cin>>a[i];
for(int i=0;i<N;i++){
dp[i] = 1;
for(int j=0;j<i;j++){
if(a[i]>a[j])dp[i] = max(dp[i],dp[j]+1);
}
if(dp[i]>ma)ma=dp[i];
}
cout<<ma<<endl;
}
return 0;
}