/********************************************************************
created:2015年1月19日 00:20:59
author: Jackery T(n)=Ο(n)
purpose: 本程序是求输入的一个数组,求其子数组的最大值;
*********************************************************************/
#include"stdafx.h"
#include<iostream>
typedef int DataType;
DataType Arrlen(DataType array[]);
void SubAarr_MaxSum(DataType array[], DataType len);
using namespace std;
void main()
{
DataType array[]={0,12,-11,5};
DataType length=sizeof(array)/sizeof(DataType);
SubAarr_MaxSum(array,length);
}
void SubAarr_MaxSum(DataType array[], DataType len)
{
if(NULL == array || len <=0){
return;
}
int curSum = 0, SubAarr_MaxSum = 0;
//首先考虑数组有正、有负或者有零的情况
for(int i=0; i<len; i++){
curSum += array[i]; // 累加
if(curSum < 0){ // 当前和小于0,重置为0
curSum = 0;
}
// 当前和大于最大和,则重置最大和
if(curSum > SubAarr_MaxSum){
SubAarr_MaxSum = curSum;
}
}
//接下来考虑数组中元素均为零的情况
if(SubAarr_MaxSum == 0){
SubAarr_MaxSum = array[0];
for(int i=1; i<len; i++){
if(array[i] > SubAarr_MaxSum){
SubAarr_MaxSum = array[i];
}
}
}
cout << "最大子数组的和为:" << endl;
cout << "SubAarr_MaxSum= " << SubAarr_MaxSum<< endl;
}
To be improved :
1.实现动态输入数组;
2.如何找出其子数组中最大数组所在数组的元素并输出;
Algorithm One Day One--求输入的数组其子数组的最大值
原文地址:http://blog.csdn.net/gggg_ggg/article/details/42915111