具体代码如下:
#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语言用分治法求一个整数序列中内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复