首页 > 其他 > 详细

浙江大学机试 最大连续子序列 Easy *DP问题,PAT原题

时间:2020-04-01 20:18:47      阅读:68      评论:0      收藏:0      [点我收藏+]

基本思想:

无;

 

关键点:

无;

 

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

const int maxn = 10100;
int n;
int d[maxn];
int dp[maxn];
int pre[maxn];

int main() {
	while (cin >> n) {
		if (n == 0)
			break;
		bool flag = true;
		for (int i = 0; i < n; i++) {
			cin >> d[i];
			if (d[i] >= 0)
				flag = false;
		}
		if (flag) {
			printf("%d %d %d\n", 0, d[0], d[n - 1]);
			continue;
		}
		dp[0] = d[0];
		for (int i = 0; i < n; i++) {
			pre[i] = i;
		}
		for (int i = 1; i < n; i++) {
			if (d[i] + dp[i - 1] > d[i]) {
				dp[i] = dp[i - 1] + d[i];
				pre[i] = pre[i-1];
			}
			else {
				dp[i] = d[i];
			}
		}
		int index = 0;
		for (int i = 1; i < n; i++) {
			if (dp[i] > dp[index]) {
				index = i;
			}
		}
		printf("%d %d %d\n", dp[index], d[pre[index]], d[index]);
	}
}

  

浙江大学机试 最大连续子序列 Easy *DP问题,PAT原题

原文:https://www.cnblogs.com/songlinxuan/p/12614954.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!