首页 > 编程语言 > 详细

返回一个整数数组中最大子数组的和。

时间:2020-02-27 19:17:47      阅读:65      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 该题的意思是 如果一个数组为   

-1 5 3 -19 5 3    第一个数之后若是该数与前一个数之和大于该数那么将这个和替换概数 即5-1<5,5不变 。 

而5+3>5 则将三替换为8以此类推

 当一个数与前一个数之和再次小于这个数时,这个数为一个下一个的最小数组,

如5+3-19=-11+5<5 则5为下一个最小数组的开始。

用代码表示 a[i]+a[i-1]>a[i]; a[i]=  a[i]+a[i-1];  max=(max,a[i]);

#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;

}

  技术分享图片

3+5-3+6=11

 

返回一个整数数组中最大子数组的和。

原文:https://www.cnblogs.com/dwx8845/p/12373653.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!