题解 | #连续子数组最大和#

连续子数组最大和

https://www.nowcoder.com/practice/1718131e719746e9a56fb29c40cc8f95

#include <stdio.h>

int main(void)
{
  //输入
    int size;

    scanf("%d", &size);
    int array[size];
    for (int i = 0; i < size; i++) {
  
        scanf("%d", &array[i]);
    }
//两层过滤,第一层过滤:之前数之和大于0,那么加上现在的数就肯定比现在的数大
  //第二层过滤:之和的数中最大的数
int max=array[0];
int sum[1000];
sum[0] = array[0];
for(int i = 1;i<size;i++){
    if(sum[i-1]>0){
        sum[i] = sum[i-1]+array[i];
    }else sum[i] = array[i];

    max = max>sum[i]?max:sum[i];
}


printf("%d",max);
    return 0;
}

全部评论

相关推荐

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