计算一个整形数组里的连续元素和的最大值

计算一个整形数组里的连续元素和的最大值
例:{9, -12, 120, 8, -20, 100, 30, -89, 20}
结果是{120, 8 , -20, 100, 30}的和最大,为 238
函数声明:
int max_sum(int *array, int array_len);


#include<stdio.h>
#define N 10
// 只要结果
int a[N];

int max_sum ( int *array, int array_length ) {
int tags = 0;
int max, i, j, k, m;
for (i = 0; i < array_length; i++ ) {
max = 0;
for ( j = i; j < array_length; j++ ) {
max += array[j];
if ( tags < max || tags == 0 ) {
k = i;
m = j;
tags = max;
}
}
}
printf ("the max sum is %3d ,from %3d to %3d\n",tags,k+1,m+1 );
}

main () {
int i;
int *p;
for (p = a; p < a+ N; p++ )
scanf ("%d",p);
p = a;
max_sum ( p, N );
}

优化:最大序列肯定是以正数开始 正数结束。如果全是负数就求最大值 先从左边遍历找出第一个正数 同时记录最大值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值