返回一个整数数组中最大子数组的和

结对组员:闫立新 苏海岩

核心思想:寻找所有可能的数组的和。

设置两个for循环,每一次都加上后面的数。

这样通过遍历,把所有可能的数组的和都计算出来。

利用max变量保存,只要找到了最大的值就替换,每次都进行更新。

在最外层的一次循坏结束后要使sum的值变为0以便不会影响后面一次循环的结果。

此方法想法简单,实现也比较容易,循环嵌套即可。

下面为代码部分:

复制代码
#include<stdio.h>
int Max(int a[],int n)
{
    int max=-1000;
    int sum;
    for (int i = 0;i < n;i++)
    {
        sum = 0;
        for (int j=i;j<n;j++)
        {
            sum=sum+a[j];
            if (sum>max)
            {
                max=sum;
            }
        }
    }
    return max;
}
int main()
{   int a[5],n,i,c;
    n=5;
    printf("输入5个数:\n");
  for(i=0;i<5;i++)
  { scanf("%d",&a[i]);
  }
  c=Max(a,n);  
  printf("%d\n",c);
   return  0; 
}
复制代码

运行结果:

posted @ 2014-03-10 18:50  snail2014  阅读(114)  评论(0编辑  收藏  举报