简单的递增数列最大和
dp[i]保存以i为结尾的递增数列最大和
于是有dp[i] = max(dp[i], dp[j]+a[i]);
#include <iostream>
using namespace std;
#define N 1005
int a[N],dp[N];
int main()
{
int n;
while(cin >> n)
{
if(n==0)
break;
for(int i=0; i<n; i++)
{
cin >> a[i];
dp[i] = a[i];
}
int max = a[0];
for(int i=1; i<n; i++)
{
for(int j=0; j<i; j++)
{
if(a[i]>a[j] && a[i]+dp[j]>dp[i])
dp[i] = a[i] + dp[j];
}
if(max < dp[i])
max = dp[i];
}
cout << max << endl;
}
return 0;
}