找出数组连续元素相加的最大和


 
#include<stdio.h>
#include<math.h>
int find_max_sum(int array[],int n)
{
	int maxsofar=0;//当前最大值
	int maxendinghere=0;//包含数组当前元素array[i]的最大值
	for (int i=0;i<n;i++)
	{
		maxendinghere = max(maxendinghere+array[i],0);
		maxsofar = max(maxsofar,maxendinghere);
	}
	maxsofar = max(0,maxsofar);//数组元素全部小于零时,取最大数组和为0
	return maxsofar;
}

int main()
{
	int data[10] = {-1,-5,9,2,-4,-6,-9,5,-23,-1};
	int max_sum = find_max_sum(data,10);
	for (int i=0;i<10;i++)
	{
		printf(" %d",data[i]);
	}

	printf("\nmax_sum:%d\n",max_sum);	

	return 0;
}

 

posted @ 2013-06-23 22:17  xiaowenchao  阅读(751)  评论(0编辑  收藏  举报