码迷,mamicode.com
首页 > 编程语言 > 详细

Algorithm One Day One--求输入的数组其子数组的最大值

时间:2015-01-20 12:04:33      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:cc++   algorithm   算法   typedef   

算法是编程的灵魂,是编程思想的精髓————Algorithm One Day One 
/********************************************************************
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--求输入的数组其子数组的最大值

标签:cc++   algorithm   算法   typedef   

原文地址:http://blog.csdn.net/gggg_ggg/article/details/42915111

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!