最大子段和的有关问题,求大家帮忙检查为什么程序不通过
最大子段和的问题,求大家帮忙检查为什么程序不通过#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));
}