#include <iostream> using namespace std; int arr[2000]; int dp[2000]; int main() { int N; while (scanf("%d", &N) != EOF) { for (int i = 0; i < N; i++) { scanf("%d", &arr[i]); dp[i] = arr[i]; } for (int i = 1; i < N; i++) { for (int j = 0; j < i; j++) { if (arr[i] > arr[j]) { //这是一个上升的子序列 dp[i] = max(dp[i], dp[j] + arr[i]); //自己 与 加上自己后的子序列 相比较 } } } int count = 0; for (int i = 0; i < N; i++) { //再遍历一遍dp,找出最大值 count = max(count, dp[i]); } printf("%d\n", count); } } // 64 位输出请用 printf("%lld")