从n-1个数开始逆推求出每个位置能够达到的最大值。
Problem : 1087 ( Super Jumping! Jumping! Jumping! ) Judge Status : Accepted
RunId : 5918414 Language : C Author : qq1203456195
Code Render Status : Rendered By HDOJ C Code Render Version 0.01 Beta
RunId : 5918414 Language : C Author : qq1203456195
Code Render Status : Rendered By HDOJ C Code Render Version 0.01 Beta
#include <stdio.h> int a[1001],b[1001]; int n; int main() { int i,j,tmax,res; while (~scanf("%d",&n)) { if(n==0) break; for (i=0;i<n;i++) { scanf("%d",&a[i]); b[i]=-1; } res=-1; for (i=n-1;i>=0;i--) { tmax=0; for (j=i+1;j<n;j++) { if(a[j]>a[i]&&b[j]>tmax) tmax=b[j]; } b[i]=a[i]+tmax; res=res>b[i]?res:b[i]; } printf("%d\n",res); } }