给定由n个整数组成的序列a1,a2,…,an,序列中可能有负数,要在这n个数中选取相邻的一段ai,ai+1,…,aj(1≤i≤j≤n),使其和最大,及子段情况。c语言
时间: 2023-10-29 11:06:14 浏览: 285
delete--number.rar_K._delete namber_delete number_给定n位正整数
5星 · 资源好评率100%
中实现该算法的代码是什么?
对于该问题,我可以回答。以下是实现该算法的C语言代码:
#include <stdio.h>
int maxSubArraySum(int a[], int n)
{
int max_so_far = 0, max_ending_here = 0;
int i;
for (i = 0; i < n; i++)
{
max_ending_here = max_ending_here + a[i];
if (max_ending_here < 0)
max_ending_here = 0;
else if (max_so_far < max_ending_here)
max_so_far = max_ending_here;
}
return max_so_far;
}
int main()
{
int arr[] = {-2, -3, 4, -1, -2, 1, 5, -3};
int n = sizeof(arr)/sizeof(arr[0]);
int max_sum = 0;
max_sum = maxSubArraySum(arr, n);
printf("Maximum contiguous sum is %d\n", max_sum);
return 0;
}
运行该代码,将会输出最大子段和为7。
阅读全文