View Code of Problem 4066

#include<iostream>
#include<string>
#include<algorithm>
#include<stack>
#include<vector>
#include<cmath>

using namespace std;

//动态规划

int main() {
	int n;
	while (cin >> n)
	{
		int *arr = new int[n];
		cin >> arr[0];
		int max = arr[0];
		for (int i = 1; i < n; i++)
		{
			cin >> arr[i];
			if (arr[i - 1] > 0)//若前一个元素大于0,则将其加到当前元素上
				arr[i] += arr[i - 1];
			if (arr[i] > max)
				max = arr[i];
		}
		cout << max << endl;//处理后数组中的最大值即为原数组的最大子串和
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 4066