HOJ 1087Super Jumping! Jumping! Jumping!简单DP

非连续最大递增子串和

#include<iostream>
#include<cstring>
#define max(a, b) a > b ? a : b
using namespace std;
const int NN = 1005;
int dp[NN], num[NN];

int main() {
	int n;
	long long mnum;
	while (cin >> n && n) {
		memset(dp, 0, sizeof(dp));
		for (int i = 0; i < n; i++)
			cin >> num[i];
		dp[0] = num[0];
		for (int i = 1; i < n; i++) {
			dp[i] = num[i];
			for (int j = 0; j < i; j++)
				if (num[i] > num[j])
					dp[i] = max(dp[i], dp[j] + num[i]);
		}
		mnum = dp[0];
		for (int i = 1; i < n; i++)
			mnum = max(mnum, dp[i]);
		cout << mnum << endl;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_44724908/article/details/104084104