简单的dp问题
//求解最大上升子序和
#include <iostream>
#include <cstring>
#include <cstdio>
#include <Map>
#include <algorithm>
using namespace std;
const int maxn=1000+10;
int dp[maxn];
int a[maxn];
int T;
int main()
{
while(cin >> T && T)
{
int i,j;
for(i=0;i<T;i++){
scanf("%d",&a[i]);
dp[i]=a[i];
}
for(i=1;i<T;i++){//从前面遍历
for(j=0;j<i;j++){
if(a[i]>a[j]){
dp[i]=max(dp[i],dp[j]+a[i]);
}
}
}
int max=0;
for(i=0;i<T;i++){
if(max<dp[i]){
max=dp[i];
}
}
cout << max << endl;
}
return 0;
}