一个数组 里面正数和负数求所有子数组的最大值

#include <iostream>  
using namespace std;
int maxSum(int* a, int n)
{
int sum = 0;
//其实要处理全是负数的情况,很简单,如稍后下面第3点所见,直接把这句改成:"int sum=a[0]"即可  
//也可以不改,当全是负数的情况,直接返回0,也不见得不行。  
int b = 0;


for (int i = 0; i<n; i++)
{
if (b<0)           //...  
b = a[i];
else
b += a[i];
if (sum<b)
sum = b;
}
return sum;
}


int main()
{
int a[10] = { 1, -2, 3, 10, -4, 7, 2, -5 };
//int a[]={-1,-2,-3,-4};  //测试全是负数的用例  
cout << maxSum(a, 8) << endl;
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值