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

时间:2023-03-09 07:15:56
HDU 1087 Super Jumping! Jumping! Jumping!  --- DP入门之最大递增子序列

题目链接

DP基础题 求的是上升子序列的最大和 而不是最长上升子序列LIS

DP[i]表示以a[i]结尾所能得到的最大值 但是a[n-1]不一定是整个序列能得到的最大值

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e3+;
int dp[maxn],n,a[maxn];
int main()
{
while(scanf("%d",&n)&&n)
{
memset(dp,,sizeof(dp));
for(int i=;i<n;i++)
scanf("%d",&a[i]);
int sum,ans=;
for(int i=;i<n;i++)
{
sum=;
for(int j=;j<i;j++)
{
if(a[j]<a[i])
sum=max(sum,dp[j]);
}
dp[i]=sum+a[i];
ans=max(ans,dp[i]);
}
printf("%d\n",ans);
}
return ;
}