看清题目哇!!可以任选就可以上升子序列了,还有就是dp还是不熟悉基本模板

自顶而下在意讲当前状态设为最后的状态,进行比较和取舍,空当接龙玩的好的估计dp都厉害

/* ***********************************************
Author        :PeterBishop
Created Time  :2019年03月15日 星期五 09时08分33秒
File Name     :t.cpp
************************************************ */

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string>
#include <cmath>
#include <cstdlib>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <stack>
#include <string>

using namespace std;

int main()
{
	freopen("in.txt","r",stdin);
	int n;
	while(cin>>n){
		if(!n)
			break;
		int a[1010];
		a[0]=0;
		for(int i=1;i<=n;i++)
			cin>>a[i];
		int dp[1010];
		int max=0;
		memset(dp,0,sizeof(dp));
		dp[1]=a[1];
		for(int i=1;i<=n;i++){
			for(int j=1;j<i;j++){
				if(a[i]>a[j]&&dp[j]+a[i]>dp[i]){
					dp[i]=dp[j]+a[i];
				}
			}

			if(max<dp[i])
				max=dp[i];

		}
		cout<<max<<endl;
	}
    return 0;
}