很简单的动态规划。
题意:求一列最大的递增和。

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 ",dp()); 25 } 26 return 0; 27 }