HDU

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087

#include <iostream>
using namespace std;
/****************************************************************************************************************
                题意:找到和最大的连续上升序列(别理解错题意,连续不是相邻!!!不是相邻!!!)
                思路:
                1,dp[i]以a[i]结尾的上升序列的最大值
                2,dp[j] =a[j] + max { dp[k] , dp[j];  k<j && a[k]<a[j] };
                3,找到当前a[i]之前最大的上升序列且可以和a[i]构成新的上升序列
****************************************************************************************************************/
int a[1005];
int dp[1005];
int main()
{
    int N;
    while(cin>>N)
    {
        if(N == 0)  break;
        for(int i = 1;i <= N;i ++){
            cin>>a[i];
            dp[i]=a[i];
        }
        int maxsum=0;
        for(int i = 1;i <= N;i ++){
            for(int j =1;j < i;j ++){
                if(a[j] < a[i] && dp[j]+a[i] > dp[i])
                    dp[i]=dp[j]+a[i];
            }
            if(dp[i] > maxsum)
                maxsum=dp[i];
        }
        cout<<maxsum<<endl;
    }
    return 0;
}



原文地址:https://www.cnblogs.com/Jstyle-continue/p/6352009.html