题解 | #连续最大和#

连续最大和

http://www.nowcoder.com/practice/5a304c109a544aef9b583dce23f5f5db

#include <stdlib.h>
#include <stdio.h>

int main(void)
{
    int * max_sum_map = NULL;    
    
    unsigned int receive_len = 0;
    int max_sum = 0;
    int max_sum_temp = 0;

    scanf("%d", &receive_len);
    max_sum_map = calloc(receive_len+1, sizeof(int));
    if(NULL == max_sum_map)
    {
        printf("malloc error!!\n");
        return 0;
    }
    scanf("%d ", &max_sum_map[0]);
    max_sum_temp = max_sum_map[0];
    max_sum = max_sum_temp;
    for(unsigned int i=1; i<receive_len; i++)
    {
        scanf("%d ", &max_sum_map[i]);
        if((max_sum_temp+max_sum_map[i]) >= max_sum_map[i])
        {
            max_sum_temp += max_sum_map[i];
           
            if(max_sum < max_sum_temp)
                max_sum = max_sum_temp;
        }
        else
        {
            max_sum_temp = max_sum_map[i];
            if(max_sum_map[i] > max_sum)
                max_sum = max_sum_map[i];
        }
        
    }
    printf("%d", max_sum);
    return 0;
}


全部评论

相关推荐

点赞 评论 收藏
转发
1 1 评论
分享
牛客网
牛客企业服务