hdu 1087

动规  d[i]记录以第 i 个数结尾的最大值

#include <cstdio>
#include <algorithm>
#include <cstring>
#define maxn 1010

using std::max;
int dp[maxn];
int value[maxn];

int main()
{
    int n,_max;
    while(scanf("%d",&n) == 1 && n)
    {
        for(int i = 0; i < n; i++)
        {
            scanf("%d",&value[i]);
        }
        int _max = dp[0] = value[0];
        for(int i = 1; i < n; i++)
        {
            dp[i] = value[i];
            for(int j = 0; j < i; j++)
            {
                if(value[i] > value[j] && dp[i] < dp[j]+value[i])
                    dp[i] = dp[j]+value[i];
            }
            _max = max(_max, dp[i]);
        }
        printf("%d\n",_max);
    }
    return 0;
}


posted @ 2013-08-06 21:12  xlc2845  阅读(124)  评论(0)    收藏  举报