連続最大和牛客網

5400 ワード

タイトルの説明
1つの配列にはN個の要素があり、連続サブ配列の最大和を求める.例えば、[−1,2,1]および最大の連続サブ配列は[2,1]であり、その和は3例1入力3−1 2出力3である
#include 
#include 
using namespace std;

//     
int main()
{
	int n;
	cin >> n;
	vector<int> nums(n);
	for (size_t i = 0; i < nums.size(); i++)
	{
		cin >> nums[i];
	}

	int max = nums[0];
	int sum1 = 0;
	int sum2 = 0;
	for (size_t i = 0; i < nums.size(); i++)
	{
		if (sum1 >= 0)
		{
			sum2 = sum1 + nums[i];
		}
		else
		{
			sum2 = nums[i];
		}

		if (sum2 > max)
		{
			max = sum2;
		}

		if (sum2 < 0)
		{
			sum2 = 0;
		}

		sum1 = sum2;

	}

	cout << max << endl;

	system("pause");
	return 0;
}