9、一个有N个元素的整型数组,求该数组的各个连续子
数组中,连续子数组各元素之和最大值是多少?
- 例如数组a[6] = {-2, 5, 3, -6, 4, -8, 6};
- 则子数组之和的最大值是8 (即a[1] + a[2])。
连续子数组:
- 原数组中所有连续的元素自由组合的得到的数组为该数组的子数组。
1 #include <stdio.h>
2
3 int arr_max(int n,int arr[]);
4
5 int main(void)
6 {
7 int max_arr;
8 int array[7] = {-2,5,3,-6,4,-8,6};
9
10 max_arr = arr_max(7,array);
11
12 printf("\n%d\n",max_arr);
13
14 return 0;
15 }
16
17 int arr_max(int n,int arr[])
18 {
19 int max=arr[0],sum=0,i,j,k;
20 for(i=0;i<n;i++)
21 {
22 for(j=0;j<n-i;j++)
23 {
24 sum = 0;
25 printf("{ ");
26 for(k=j;k<=i+j;k++)
27 {
28 sum += arr[k];
29 printf("%d ",arr[k]);
30 }
31 if(sum > max)
32 max = sum;//换更大值
33 printf("},");
34 }
35 printf("\n");
36 }
37 return max;
38 }
{ -2 },{ 5 },{ 3 },{ -6 },{ 4 },{ -8 },{ 6 },
{ -2 5 },{ 5 3 },{ 3 -6 },{ -6 4 },{ 4 -8 },{ -8 6 },
{ -2 5 3 },{ 5 3 -6 },{ 3 -6 4 },{ -6 4 -8 },{ 4 -8 6 },
{ -2 5 3 -6 },{ 5 3 -6 4 },{ 3 -6 4 -8 },{ -6 4 -8 6 },
{ -2 5 3 -6 4 },{ 5 3 -6 4 -8 },{ 3 -6 4 -8 6 },
{ -2 5 3 -6 4 -8 },{ 5 3 -6 4 -8 6 },
{ -2 5 3 -6 4 -8 6 },