题目大意:跳格子,约束条件是,下一步格子的数比上一步格子的数要大。
解题思路:典型的最长有序子序列,并记录各个序列的sum,输出最大的sum;
/*hdu1087*/
#include <stdio.h>
#define nMax 1024
typedef struct data
{
long n;
long sum;
};
struct data a[nMax];
int main(int argc, char *argv[])
{
int n,i,j;
long max;
while(scanf("%d",&n),n)
{
for(i=0; i<n; i++)
{
scanf("%d",&a[i].n);
a[i].sum=a[i].n;
if(i==0) max=a[0].n;
int tmp=a[i].sum;
for(j=i-1; j>=0; j--)
{
if(a[j].n<a[i].n)
{
if(a[i].sum<tmp+a[j].sum)
a[i].sum=tmp+a[j].sum;
if(max<a[i].sum)
max=a[i].sum;
}
}
}
printf("%ld\n",max);
}
return 0;
}