#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int max(int a, int b)
{
return a > b ? a : b;
}
int MaxSum(int *A, int n)
{
int i;
int inital = A[n - 1];
int nSum = A[n - 1];
for (i = n - 2; i >= 0; i--)
{
inital = max(A[i], inital + A[i]);
nSum = max(inital, nSum);
}
return nSum;
}
int main()
{
int a[] = { 1, 2, -3, -4, 5, -7, 9, -5 };
int res = MaxSum(a, sizeof(a) / sizeof(int));
printf("%d\n", res);
system("pause");
return 0;
#include<stdlib.h>
#include<string.h>
int max(int a, int b)
{
return a > b ? a : b;
}
int MaxSum(int *A, int n)
{
int i;
int inital = A[n - 1];
int nSum = A[n - 1];
for (i = n - 2; i >= 0; i--)
{
inital = max(A[i], inital + A[i]);
nSum = max(inital, nSum);
}
return nSum;
}
int main()
{
int a[] = { 1, 2, -3, -4, 5, -7, 9, -5 };
int res = MaxSum(a, sizeof(a) / sizeof(int));
printf("%d\n", res);
system("pause");
return 0;
}
运行结果:

被折叠的 条评论
为什么被折叠?



