现在的位置: 首页 > 综合 > 正文

求整数数组中最大和子集并输出子集下标

2013年08月11日 ⁄ 综合 ⁄ 共 420字 ⁄ 字号 评论关闭
int MaxSum(int   a[],   int   size) 
{ 
	if (size == 0)
	{
		return INT_MIN;
	}
	int maxVal = a[0];//以最大值作为初始值
	int start = 0,end = 0;
	for (int i = 1;i<size;++i)
	{
		if (a[i] > maxVal)
		{
			maxVal = a[i];
			start = end = i;
		}
	}
	int temp_sum=0,step = 0; 
	for(int i=0;i <size;i++) 
	{ 
		temp_sum+=a[i]; 
		if(temp_sum> maxVal)
		{
			maxVal=temp_sum; 
			end = i;
			start = end - step;
			++step;
		}
		else  if(temp_sum <0) 
		{
			step = 0;
			temp_sum=0;
		}
		else
		{
			++step;
		}
	} 
	cout<<"max sum is:"<<maxVal<<endl;
	cout<<"loc is: "<<start<<" "<<end<<endl;
	return   maxVal; 
}

抱歉!评论已关闭.