HDU 1087 Super Jumping! Jumping! Jumping!

很简单的动态规划。

题意:求一列最大的递增和。

 1 #include <stdio.h>
 2 #define maxn 1010
 3 
 4 int d[maxn] , l[maxn] , n;
 5 
 6 int dp()
 7 {
 8     for(int i=1;i<=n;i++) d[i] = l[i];
 9     for(int i=2;i<=n;i++){
10         for(int j=i-1;j>=1;j--){
11             if(l[i] > l[j]){
12                 if(d[j]+l[i] > d[i]) d[i] = d[j]+l[i];
13             }
14         }
15     }
16     for(int i=n;i>=1;i--) if(d[i] > d[n]) d[n]=d[i];
17     return d[n];
18 }
19 
20 int main()
21 {
22     while(scanf("%d",&n),n) {
23         for(int i=1;i<=n;i++) scanf("%d",&l[i]);
24         printf("%d\n",dp());
25     }
26     return 0;
27 }
View Code

 

 

 

posted on 2013-11-23 10:46  从此以后  阅读(183)  评论(0编辑  收藏  举报