1,求子数组的最大和
2,代码
/*************************************************************************
> File Name: MaxSumOfSubArray.cpp
> Author:zhangtx
> Mail: zhangtx@jinher.com
> Created Time: 2018年03月07日 星期三 10时46分35秒
************************************************************************/
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int getMin(int data[],int count)
{
int min=data[0];
for(int i=1;i<count;i++)
if (min<data[i])
min = data[i];
return min;
}
int MaxSumOfSubArray(int data[],int count)
{
int maxSum = getMin(data,count);
int tmpSum = 0;
int begin=0,tmpBegin=0,end=0;
for (int i = 0;i<count;i++)
{
if (tmpSum<=0)
{
begin = i;
tmpSum = data[i];
}
else
tmpSum += data[i];
if (tmpSum>maxSum)
{
maxSum = tmpSum;
end = i;
}
}
printf("\nbegin:%d,end=%d",begin,end);
return maxSum;
}
int main(int argc,char *argv[])
{
int data[]={
1,2,0,3,-9,1,1,2,1,2,4,-1,0,1,4,-40,9,5,4,-3
};
printf("\nsum is %d\n",MaxSumOfSubArray(data,20));
return 0;
}
3,运行结果
[root@M-192-168-10-225 algo]# ./a.out
begin:16,end=18
sum is 18
[root@M-192-168-10-225 algo]#