/******************************************************************** 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 :ios
1.實現動態輸入數組;算法
2.如何找出其子數組中最大數組所在數組的元素並輸出;編程