最长递增子序列hdu1087

#include<map>
#include<set>
#include<list>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long

using namespace std;

const int N=1005;
int n,a[N],dp[N];
int main()
{
    while(cin>>n,n){
        memset(dp,0,sizeof(dp));
        for(int i=0;i<n;i++)cin>>a[i];
        int ans=0;
        for(int i=0;i<n;i++)
        {
            dp[i]=a[i];
            for(int j=0;j<i;j++)
            {
                if(a[i]>a[j])dp[i]=max(dp[i],dp[j]+a[i]);
                if(dp[i]>ans)ans=dp[i];
            }
        }
     //   for(int i=0;i<n;i++)cout<<dp[i]<<endl;
        cout<<ans<<endl;
    }
    return 0;
}

https://vjudge.net/contest/68966#problem/E

dp【i】=a【i】这一步一定不能忘了!!

原文地址:https://www.cnblogs.com/acjiumeng/p/6539069.html