题目链接地址:http://acm.hdu.edu.cn/showproblem.php?pid=1087
C++代码:
#include<stdio.h>
#include<limits.h>
const int N=1010;
int dp[N];
int arr[N];
int main(){
int n;
//freopen("1.txt","r",stdin);
while(scanf("%d",&n)!=EOF&&n){
for(int i=1;i<=n;i++)
scanf("%d",&arr[i]);
arr[0]=INT_MIN;arr[n+1]=INT_MAX;
dp[0]=0;int res=INT_MIN;
for(int i=1;i<=n;i++){
int max=0;
for(int j=i-1;j>0;j--){
if(dp[j]>max&&arr[i]>arr[j])
max=dp[j];
}
dp[i]=max+arr[i];
if(dp[i]>res)
res=dp[i];
}
printf("%d\n",res);
}
return 0;
}