上升子序列
Problem Description
Input
Output
Sample Input
7 1 7 3 5 9 4 8
Sample Output
18
#include<stdio.h>
int sum[100001], a[100001];
int main(void)
{
int i, j, n, max;
while(~scanf("%d", &n))
{
for(i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
sum[i] = a[i];
}
for(i = 1; i <= n; i++)
{
for(j = 1; j <= i; j++)
{
if(a[i] > a[j])
{
if(sum[i] < sum[j] + a[i])
{
sum[i] = sum[j] + a[i]; //学习这两行代码的思想
}
}
}
}
max = -1;
for(i = 1; i <= n; i++)
{
if(max < sum[i])
{
max = sum[i];
}
}
printf("%d\n", max);
}
return 0;
}