题目:求数组最大连续和,比如
1,-2,3,10,-4,7,2,-5
结果应该为18
3,10,-4,7,2
分析:这和之前的数组某个值个数大于一半的处理办法是一样的,如果加上当前的值小于0了,这个是稳亏的,那么重新开始,now置0,most是用来记录曾经出现过的最大值,如果now大于most,那么most=now
int Most(int arr[],int length)
{
if (length<=0 || arr==NULL) {
return 0;
}
int now=0;
int most=0;//用来记录曾经出现过的最大值
for (int i=0; i<length; i++) {
now=now+arr[i];
if (now<0) {
now=0;
}
if (now>most) {
most=now;//更新
}
}
return most;