最大子列和问题

当输入的数全是负数时输出0该怎么修改?大神求帮忙#include<stdio.h>voidmain(){intk;scanf("%d",&k);intn[1000000]... 当输入的数全是负数时输出0 该怎么修改?大神求帮忙
#include <stdio.h>
void main()
{
int k;
scanf("%d",&k);
int n[1000000],i;
int i2,a,sum,max,j;
for (i=0; i<k;i++)
{
scanf("%d",&n[i]);
}
for (i2=1; i2<=k; i2++){
for(j=i2; j<=k; j++){
sum=0;
for(a=i2; a<=j; a++){
sum=sum+n[a-1];
if(sum>max)
max=sum;}}}
printf("%d",max);
}
展开
 我来答
墨夷欣笑Lf
2015-09-19 · TA获得超过839个赞
知道小有建树答主
回答量:215
采纳率:0%
帮助的人:71.9万
展开全部
1、当数组n元素都为负数时,sum=sum+n[a-1]; if(sum>max) 此处因为sum加上n[a-1]是一个负数,所以sum也是一个负数,而max“初始值”为0(因为max没有初始化,可能是随机值,你的系统赋其值为0,建议定义时就初始化),所以这个if条件始终不满足,if里面的max=sum;也就不会执行,所以max始终为0.
2、我看到你的这个n数组有100万元素,一个int占4个字节,这个数组占了400万字节,约为3.8MB,一般来说栈空间大小只有几MB大小,这种大数组建议用动态内存申请(如malloc),越过栈大小可能会导致程序异常终止。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式