计算一个数组中最大子序列的和

来源:互联网 发布:炎陵金域名苑 编辑:程序博客网 时间:2024/05/21 12:39
输入一个整形数组,数组里有正数也有负数。 
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 

求所有子数组的和的最大值。要求时间复杂度为 O(n)。

int arr[10];void randData(int a[], int start, int end){srand(time(NULL));for (int i = start; i <= end; ++i)a[i] = rand() % 10-5; printf("生成新的序列 :");print(a, start, end);printf("\n");}int maxSubarray(int a[], int size) { if (size<=0) perror("error array size"); int sum = 0; int max = - (1 << 31); int cur = 0; while (cur < size) { sum += a[cur++]; if (sum > max) max = sum; else if (sum < 0) sum = 0; } return max; }
结果如下:

                                                                                                                                                                                     



原创粉丝点击