設計一個O(n2)時間的算法,找出由n個數組成的序列的最長單調遞增子序列。
輸入格式:
輸入有兩行: 第一行:n,代表要輸入的數列的個數 第二行:n個數,數字之間用空格格開
輸出格式:
最長單調遞增子序列的長度
輸入樣例:
在這裏給出一組輸入。例如:
5
1 3 5 2 9
輸出樣例:
在這裏給出相應的輸出。例如:
4
#include<algorithm>
#include<iostream>
using namespace std;
int main ()
{
int n;
int a[10005],dp[10005];
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&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);
}
}
int ans=0;
for(int i=0;i<n;i++){
ans=(ans,dp[i]);
}
printf("%d",ans);
return 0;
}