hdu 1087 Super Jumping! Jumping! Jumping!

这道题跟最长上升子序列查不多,只不过需要记录的信息不一样

关于最长上升子序列见:最长上升子序列nlogn算法

  题目传送门

 1 #include<stdio.h>
 2 #include<string.h>
 3 int a[1001];
 4 int b[1001];
 5 int main()
 6 {
 7     int n,i,j;
 8     int max;
 9     while(scanf("%d",&n),n)
10     {
11         memset(b,0,sizeof(b));
12         memset(a,0,sizeof(a));
13         for(i=0;i<n;i++)
14             scanf("%d",&a[i]);
15         for(i=0;i<n-1;i++)
16         {
17             for(j=i+1;j<n;j++)
18             {
19                 if(a[j]>a[i]&&b[j]<a[i]+b[i])
20                 {
21                     b[j] = a[i]+b[i];
22                 }
23             }
24         }
25         max = 0;
26         for(i=0;i<n;i++)
27             if(max<b[i]+a[i]) 
28                 max = b[i]+a[i];
29         printf("%d\n",max);
30     }
31     return 0;
32 }

原文地址:https://www.cnblogs.com/quantumplan/p/3071375.html