我是靠谱客的博主 落后铅笔,最近开发中收集的这篇文章主要介绍c语言用分治法求一个整数序列中的最大值,给定一个整数序列,怎么求出子段序列的最大和?...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

具体代码如下:

#include

int main(){

int max,sum,n,x;

while(scanf("%d",&n)!=EOF){

sum=0;

max=0;

while(n--){

scanf("%d",&x);

sum+=x;

if(sum>0){//sum大于0

if(sum>max){//sum大于max则sum赋值给max,否则继续加下一个数

max=sum;

}

}

else{//sum<0,置sum为0

sum=0;

}

}

printf("%dn",max);

}

return 0;

}

根据以上序列举例说明:

例如:3 2 -7 6 5 -10 3,求其中连续数字最大的和的过程如下:

设两个变量,sum和max。

其中,sum 从前往后做相加运算,如果sum为正,则max和sum比较,取较大的放入max;如果sum小于max,则继续向后加;如果sum小于0,则sum清除为0。对于上述数组,则有:

sum = 3

max = 3

sum = 5

max = 5

sum = -2

max =5 sum = 0

sum = 6

max = 6

sum = 11

max = 11

sum = 1

max = 11

sum = 4

max = 11

则最大数是11

最后

以上就是落后铅笔为你收集整理的c语言用分治法求一个整数序列中的最大值,给定一个整数序列,怎么求出子段序列的最大和?...的全部内容,希望文章能够帮你解决c语言用分治法求一个整数序列中的最大值,给定一个整数序列,怎么求出子段序列的最大和?...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部