C++查找数组中的最大子数组,此算法的时间复杂度为O(n)具体代码如下:
#include<stdio.h>#include<string.h>#define N 10/*求最大子数组问题要求数组中有正也有负数,如果全为负数,只需要找出最大的负数即可。*/int find_max_subarray(int a[N]){int sum=0;int m=0;int i;int b=0;for(i=0;i<N;i++){if(b<0)b=a[i];//如果b<0那么直接将b的位置移到当前负数elseb=b+a[i];if(sum<b)sum=b;//sum为当前的最大子数组}return sum;}void main(){int a[N]={2,-3,-25,20,13,-5,18,20,-7,-12};printf("最大子数组的和为%5d\n",find_max_subarray(a));}