分析:
地址
代码:
#include <iostream>
#include <algorithm>
#include <cstring>
#include <map>
using namespace std;
int a[1005];
int dp[1005];
int fun(int n){
if(dp[n]>=0)
return dp[n];
int ans;
if(n==0)
ans = a[n];
else{
ans=a[n];
for(int i=n-1;i>=0;i--){
if(a[i]<a[n])
ans=max(ans,fun(i)+a[n]);
}
dp[n]=ans;
}
return ans;
}
int main(){
int n;
while(cin>>n){
memset(dp,-1,sizeof(dp));
for(int i=0;i<n;i++){
cin>>a[i];
}
int ans=0;
for(int i=0;i<n;i++){
ans=max(ans,fun(i));
}
cout<<ans<<endl;
}
return 0;
}