返回一个整数数组中最大子数组的和
题目要求如下:

解题思路:从第二项开始到数组末尾,比较该项与前一项相加后值是否变大,若变大,则将当前项的值置为他与前一项的和,否的话就不变。这样处理结束后,第n项的值,就是原数组前n项中的最大连续子数组的和,最后只要取处理完毕后的数组中最大的一项即可。
C++代码如下:
#include<iostream>
using namespace std;
void main()
{
int s[100];
int n,max;
//输入数组长度
cin >> n;
for (int i = 0;i < n;i++)
{
//输入数组元素
cin>> s[i];
}
//max初始化为s[0]
max = s[0];
for (int i = 1;i < n;i++)
{
//比较与前一项相加值是否会增大
if ((s[i] + s[i - 1] )> s[i])
{
s[i] = s[i] + s[i - 1];
}
//更新max的值
if (max < s[i])max = s[i];
}
cout << "最连续大子集和:" << max << endl;
}

浙公网安备 33010602011771号