码迷,mamicode.com
首页 > 其他好文 > 详细

D - Super Jumping! Jumping! Jumping! HDU - 1087 (基础DP)

时间:2020-05-25 19:25:25      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:div   最小   ace   nbsp   inf   16px   个数   code   col   

题目大意: 给出一个序列,然后求这个序列的最大上升子序列的和。

题解:定义状态dp[i]表示前i个数的最大和,dp[i]的最小值应该是arr[i]了,因为i前边可能有负数,对于负数,虽然可以构成上升子序列,但是没有必要选。

code:

#include<bits/stdc++.h>
using namespace std;
const long long  INF=1e18+7;
const int N=1e3+7;
long long  arr[N];
long long dp[N];
int main(){
    int n;
    while(cin>>n,n){ 
        for(int i=1;i<=n;i++){
            cin>>arr[i];
            dp[i]=arr[i];
        } 
        long long  ans=arr[1];
        for(int i=1;i<=n;i++){
            for(int j=1;j<i;j++){
                if(arr[i]>arr[j]){
                    dp[i]=max(dp[i],dp[j]+arr[i]);
                }
            }
            ans=max(ans,dp[i]);
        }
        cout<<ans<<endl;
    }
    return 0;
} 

 

D - Super Jumping! Jumping! Jumping! HDU - 1087 (基础DP)

标签:div   最小   ace   nbsp   inf   16px   个数   code   col   

原文地址:https://www.cnblogs.com/Accepting/p/12960270.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!