首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

最大子段和的有关问题,求大家帮忙检查为什么程序不通过

2013-04-20 
最大子段和的问题,求大家帮忙检查为什么程序不通过#includestdio.hintMaxSum(int n,int a[]){int sum0,

最大子段和的问题,求大家帮忙检查为什么程序不通过


#include<stdio.h>

int  MaxSum(int n,int a[])
{
    int sum=0,b=0;
    
    for(int i=1;i<=n;i++)
{
        if(b>0)
b+=a[i];
        else 
b=a[i];
        if(b>sum)
sum=b;
    }

   return sum;
}
void main()
{
    int n,a[100],m;
    printf("请输入整数序列的元素个数n:");
    scanf("%d",&n);

    printf("请输入各元素的值:");
    for(m=1;m<=n;m++)
scanf("%d",a[m]);
 MaxSum(n,a);

}

[解决办法]
老兄,scanf("%d",a[m]);这语句不对吧,应该是scanf("%d",&a[m]);
[解决办法]
scanf("%d",&a[m]);

你好像要 一个一个输入数组的值, 那就需要加&


除了这个以外,你的m值的初始值 有问题
[解决办法]

#include<stdio.h>

int  MaxSum(int n,int a[])
{
if(n == 0) return;
    int sum=a[1],b=0; //这里sum的初始值最好改一下,因为最大字段和可能为负数。
    for(int i=2;i<=n;i++)
    {
        if(b>0) b+=a[i];
        else b=a[i];
        if(b>sum) sum=b;
    }
return sum;
}
void main()
{
    int n,a[100],m;
    printf("请输入整数序列的元素个数n:");
    scanf("%d",&n);
    printf("请输入各元素的值:");
    for(m=1;m<=n;m++) scanf("%d",&a[m]); //这里漏了个&
    printf("%d\n", MaxSum(n,a));
}

热点排行
Bad Request.