`
zhu_jinlong
  • 浏览: 5264 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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

J# 
阅读更多
计算一个整形数组里的连续元素和的最大值
例:{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 );
}

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

相关推荐

Global site tag (gtag.js) - Google Analytics