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

Posted accepting

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了D - Super Jumping! Jumping! Jumping! HDU - 1087 (基础DP)相关的知识,希望对你有一定的参考价值。

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

题解:定义状态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)的主要内容,如果未能解决你的问题,请参考以下文章

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

hdu 1087 Super Jumping! Jumping! Jumping!

HDU 1087Super Jumping! Jumping! Jumping!

HDU-1087.Super Jumping! Jumping! Jumping!

HDU 1087 Super Jumping! Jumping! Jumping! --- DP入门之最大递增子序列

Super Jumping! Jumping! Jumping!