求子序列的最大和
这是数据结构老师布置的第七道题,题目要求如下:
具体实现思路:
声明一个sum变量代表当前已经得到的和,声明一个max代表当前最大的和,每次先让sum累加,然后比较sum是否小于零,如果小于零,则直接将sum归零,进行下一次累加。然后比较sum和max大小,如果sum比max大,更新max的值。最后便得出max的值。
代码如下:
#include"pch.h"
#include<iostream>
#include<vector>
using namespace std;
int biggestSum(vector<int> input)
{
if (input.size() == 0)
return 0;
if (input.size() == 1)
return input[0];
int max = 0;
int sum = 0;
for (int i = 0; i < input.size(); i++)
{
sum += input[i];
if (sum < 0)
{
sum = 0;
}
else if (sum > max)
max = sum;
}
return max;
}
int main()
{
vector<int> input;
int n;
cout << "Enter the quantity of the numbers: ";
cin >> n;
for (int i = 0; i < n; i++)
{
int temp;
cin >> temp;
input.push_back(temp);
}
cout << "The biggest sum is " << biggestSum(input) << endl;
}
运行结果: