输入一组整数,求出这组数字子序列和中的最大值,只要求出最大子序列的和。
例如:
序列:-2, 11, -4, 13, -5, 2, -5, -3, 12, -9,则最大子序列和为21。
序列:0, -3, 6, 8, -20, 21, 8, -9, 10, -1, 3, 6, 5,则最大子序列和为43。
代码:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int num;
//int N = 10;
vector<int> seq;
cout << "please enter a sequence:(enter 0 is meaning stop)"<<endl;
while (cin >> num)
{
if (num != 0)
seq.push_back(num);
else
break;
}
int N = seq.size();
int max = 0;
for (int i = 0; i <N ; i++)
{
int sum = seq[i];
for (int j = i+1; j < N; j++)
{
sum += seq[j];
if (sum>max)
{
max = sum;
}
}
}
cout<<"max="<<max<<endl;
return 0;
}