标签:
3 1 3 2 4 1 2 3 4 4 3 3 2 1 0
4 10 3
对于dp初始化不能简单地直接赋值为0,因为数组的值可能是负数!!!
#include <iostream> #include <cstring> using namespace std; const int Max=1000+10; int a[Max]; long long dp[Max]; int main() { int n; while(cin>>n,n!=0) { for(int i=1;i<=n;i++) cin>>a[i]; long long top=a[1]; for(int i=1;i<=n;i++) dp[i]=a[i]; //while ai may lower than 0,you must init dp array like this for(int i=2;i<=n;i++) { for(int j=1;j<i;j++) { if(a[j]<a[i]) { if(dp[j]+a[i]>dp[i]) { dp[i]=dp[j]+a[i]; } } } top=max(top,dp[i]); } for(int i=1;i<=n;i++) { if(top<a[i]) top=a[i]; } cout<<top<<endl; } return 0; }
hdu 1087 Super Jumping! Jumping! Jumping!
标签:
原文地址:http://www.cnblogs.com/zsyacm666666/p/5259986.html