蒜头君闯关—dp
题目描述:
AC代码:
//蒜头君闯关
#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
long long dp[1000+5];
long long a[1000+5];
int main()
{
//解法:最大的上升子序列【可以不连续】
int n,i,j;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
//dp[i]:代表以第i个元素为结束时,最大的序列和为多少【可以不连续】
long long ans=0;
dp[1]=a[1];
for(i=1;i<=n;i++)
{
dp[i]=a[i];
for(j=1;j<i;j++)
{
if(a[i]>a[j])
dp[i]=max(dp[j]+a[i],dp[i]);
}
ans=max(ans,dp[i]);
}
cout<<ans<<endl;
return 0;
}