- #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的位置移到当前负数
- else
- b=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));
- }
- //该片段来自于http://www.codesnippet.cn/detail/260320149106.html
来源: http://www.codesnippet.cn/detail/260320149106.html