-
Notifications
You must be signed in to change notification settings - Fork 0
/
最大连续子数组和
59 lines (57 loc) · 1.41 KB
/
最大连续子数组和
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int maxSubArray(int* nums, int numsSize)
{
int max = INT_MIN;
int i, j, sum;
for (i = 0; i < numsSize; i++)
{
if (nums[i] > 0)
{
break;
}
}
if (i == numsSize)
return 0;
for (i = 0; i < numsSize; i++)
{
sum = 0;
for (j = i; j < numsSize; j++)
{
sum = nums[j] + sum;
if (sum > max)
max = sum;
}
}
return max;
}
int main()
{
int i;
int a1[8] = { 1,-2,3,10,-4,7,2,-5 };
int result1 = maxSubArray(a1, 8);
printf("原数组为:");
for (i = 0; i < 8; i++)
printf("%d ", a1[i]);
printf("\n最大子数组和为 %d\n", result1);
int a2[9] = { -2,1,-3,4,-1,2,1,-5,4 };
int result2 = maxSubArray(a2, 9);
printf("原数组为:");
for (i = 0; i < 9; i++)
printf("%d ", a2[i]);
printf("\n最大子数组和为 %d\n", result2);
int a3[6] = { -2,11,-4,13,-5,-2 };
int result3 = maxSubArray(a3, 6);
printf("原数组为:");
for (i = 0; i < 6; i++)
printf("%d ", a3[i]);
printf("\n最大子数组和为 %d\n", result3);
int a4[5] = { -1,-2,-3,-4,-5 };
int result4 = maxSubArray(a4, 5);
printf("原数组为:");
for (i = 0; i < 5; i++)
printf("%d ", a4[i]);
printf("\n最大子数组和为 %d\n", result4);
return 0;
}