题目的大意是:给出一序列,求出该序列的最长上升子序列的最大长度。
思路:
a: 1 7 3 5 9 4 8
dp: 1 2 2 3 4 3 4
#include <iostream> #include <cstring> using namespace std; const int MAXN = 1005; int main() { int n; while( cin>>n ) { int a[MAXN], dp[MAXN]; int i, j; int ans=1; for( i=1; i<=n; ++i ) cin >> a[i]; memset( dp, 0, sizeof(dp) ); for( i=2; i<=n; ++i) { for( j=1; j<i; ++j) { if(a[i]>a[j]) dp[i]=max(dp[j]+1, dp[i]); } ans=max(ans, dp[i]+1); } cout<<ans<<endl; } return 0; }
时间: 2024-10-13 05:29:26