最大上升子序列和
//最大上升子序列和
//dp[i]:包含a[i]在內(nèi)的前i個(gè)元素的最大上身子序列和
//input:7
//1 7 3 5 9 4 8
//output
//18
#include<bits/stdc++.h>
using namespace std;
int n;
int a[100];
int dp[100];
int main()
{
? ?scanf("%d",&n);
? ?for(int i=0;i<n;i++)
? ?{
? ? ? ?scanf("%d",&a[i]);
? ?}
? ?dp[0] = a[0];
? ?for(int i=1;i<=n;i++)
? ?{
? ? ? ?dp[i] = -1;
? ? ? ?for (int j = 0; j < i; j++)
? ? ? ?{
? ? ? ? ? ?if (a[i] > a[j] )
? ? ? ? ? ?{
? ? ? ? ? ? ? ?int mid = dp[j] + a[i];
? ? ? ? ? ? ? ?dp[i] = max(mid,dp[i]);//統(tǒng)計(jì)最大值
? ? ? ? ? ?}
? ? ? ?}
? ?}
? ?for(int i=0;i<n;i++)
? ?{
? ? ? ?printf("%d ",dp[i]);
? ?}
}
標(biāo)簽: