【算法】求数列的最大子数列

题目:

输入n,数组长度为n,再输入数组的n个元素,输出该数列中最大子数列的和

示例:

输入: 8 6 -2 -3 7 -15 1 2 2

输出: 8

算法:

动归问题,子列和sum每次取值都比较自身加上后一个数之后与后一个数本身哪个更大,最终最大子列和res每次取值都比较当前子列和sum和自身哪个更大

源码:

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

int main()
{
	int n;
	cin >> n;

	vector<int> v(n);
	for (int i = 0; i < n; ++i)
	{
		cin >> v[i];
	}

	int sum = 0;
	int res = v[0];

	for (int i = 0; i < n; ++i)
	{
		sum = max(sum + v[i], v[i]);
		res = max(sum, res);
	}

	cout << res << endl;
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/phoenixFlyzzz/article/details/130441400