/* FindGreatestSumofSubArray.cpp : 定义控制台应用程序的入口点。
@mishidemudong
@2015-5-22
*/
#include "stdafx.h"
int FindGreatestSum(int *A, int length)
{
int CurentSum = A[0];
int StateSum = 0;
if (A == NULL || length <= 0)
return 0;
for (int i = 1; i < length; ++i)
{
if (CurentSum <= 0) //如果和都小于0了,就放弃前面的和,重新等于当前数,并从当前数开始计算和
CurentSum = A[i];
else
CurentSum += A[i];
if (CurentSum>StateSum) //记录最大的和,并保存在StateSum中;
StateSum = CurentSum;
}
return StateSum;
}
int _tmain(int argc, _TCHAR* argv[])
{
int A[] = { 1, -2, 1, 10, -4, 7, 9, 0, 2, -5 };
printf("%d", FindGreatestSum(A, 9));
return 0;
}
最大子数组的求和方法一(非动态规划)
最新推荐文章于 2021-03-20 12:05:04 发布