AcWing 1016. 最大上升子序列和
原题链接
简单
作者:
寻路
,
2021-03-11 21:02:15
,
所有人可见
,
阅读 315
#include <iostream>
using namespace std;
const int N = 1010;
int q[N],sum[N];
int main()
{
int n;
scanf("%d",&n);
for (int i = 0; i < n; i++)
{
scanf("%d",&q[i]);
sum[i] = q[i]; // sum[i]表示以q[i]为尾的上升序列和,初始值为q[i]
}
int max_sum;
for (int i = 1; i < n; i++)
for (int j = 0; j < i; j++)
if (q[j] < q[i])
sum[i] = max(sum[j] + q[i],sum[i]); // 计算最大上升序列和
max_sum = sum[0];
for (int i = 1; i < n; i++) max_sum = max(max_sum,sum[i]);
printf("%d\n",max_sum);
return 0;
}