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;
}
求整数数组中最大和子集并输出子集下标
最新推荐文章于 2020-12-11 10:02:28 发布