1. 如下例程:
/* 求连续子数组的最大和 */
int max_sum(int a[], size_t length)
{
/* 参数合法性检查 */
if (NULL == a || 0 == length)
{
return 0;
}
/* 计算连续子数组的最大和 */
size_t i;
int max = 0x80000000; // 初始化为最小负数
int sum = 0;
for (i = 0; i < length; i++)
{
/* 如果为负数,舍弃 */
if (sum < 0)
{
sum = a[i];
}
else
{
sum += a[i]; // 为正,累加
}
/* 更新最大和 */
if (sum > max)
{
max = sum;
}
}
return max;
} // end