hdu1087 Super Jumping! Jumping! Jumping!
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> #include<algorithm> using namespace std; int n; long a[1010]; long d[1010];// int main() { while(scanf("%d",&n),n) { int i,j; for(i=0;i<n;i++) { scanf("%ld",&a[i]); d[i]=a[i]; } long mmax=d[0]; for(i=1;i<n;i++) { for(j=0;j<i;j++) { if(a[i]>a[j]&&d[j]+a[i]>d[i]) { d[i]=d[j]+a[i]; } } if(mmax<d[i]) { mmax=d[i]; } } printf("%ld\n",mmax); } return 0; }
n^2的复杂度,d[i]记录前i+1个数的最大上升子段的和