連続最大和牛客網
5400 ワード
タイトルの説明
1つの配列にはN個の要素があり、連続サブ配列の最大和を求める.例えば、[−1,2,1]および最大の連続サブ配列は[2,1]であり、その和は3例1入力3−1 2出力3である
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;
}