首页 > 其他 > 详细

求连续的子数组的和

时间:2014-03-18 12:03:11      阅读:345      评论:0      收藏:0      [点我收藏+]

                                                                               求连续的子数组的和

                                                                               郭志伟&王扣柱

具体思路:

1.创建一个数组,首先在主函数里判断是否全为负数,若全部是负数则直接选出最大值即可,否则调用addMax(int n,int*a)函数

2.在addMax函数里首先设置max=0,再设置一个中间值median=0;

3.for循环从数组的第一个数开始加起median=median+a[i];如果值为负就舍去,在下次循环时从新给median赋值一个新的数值,如果和大于0则与max比较,若大于max就max=median,否则继续循环重复上述步骤直到循环结束

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include<iostream>
using namespace std;
int addMax(int n,int*a)
{
    int i,max=0,median=0;
    for(i=0;i<n;i++)
    {
        if(median<0)
            median=a[i];
        else
            median=median+a[i];
        if(max<median)
            max=median;
    }
    return max;
}
int main()
{
    int a[7]={-1,-4,5,-6,9,8,-1};
    int i,m=0,max=0;
    for(i=0;i<7;i++)//判断是否全为负数
    {
        if(a[i]<0)
            m++;
    }
    if(m=7)
    {
        max=a[0];
        for(i=1;i<7;i++)
        {
            if(max<a[i])
                max=a[i];
        }
    }
    else
    {
        max=addMax(7,a);
    }
    cout<<max<<endl;
    return 0;
}

  

求连续的子数组的和,布布扣,bubuko.com

求连续的子数组的和

原文:http://www.cnblogs.com/guozw/p/3606396.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!