参考:https://www.cnblogs.com/conw/p/5896155.html
Code
int main(int argc, const char * argv[]) {
@autoreleasepool {
int a[] = {-1,2,3,4,-8,30};
int len = (int) sizeof(a) / sizeof(*a);
int dp = a[0];//d[i]表示以a[i]为结尾的最大子序列和
int sum = dp;//最大子序列和
for (int i = 1; i<len; i++) {
dp = MAX(0, dp) + a[i];
sum = MAX(sum, dp);
}
printf("%d\n",sum);
}
return 0;
}
console
31
网友评论