您的位置:首页 > 其它

结对项目——最大子数组

2016-03-26 07:51 190 查看

求数组中最大子数组的和

一、程序要求

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

2、输入一个整数数组,数组中有正数也有负数;

3、数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和;

4、求所有子数组的和的最大值,要求时间复杂度为O(n);

二、程序设计思想

数组的长度和各个元素由键盘键入。先将各元素累加,每加一个数,看结果是否为0,若为0,重置结果,并且结果与最大子数组和(简称最大和)比较,若有更大的和,就保存较大的结果到最大和中。若最大和与结果的值均为0,说明数组为负数数组,最大子数组即为最大元素。

三、源程序

//李俏、张莹荧,2016.3.21
//求整数数组的最大子数组的和

#include<iostream>
using namespace std;

int main()
{
int arrlength,i;
int j;
int maxsum=0,sum=0;
int arr[100];

cout<<"请输入数组长度:";
cin>>arrlength;
if(arr==NULL||arrlength==0)
{
//exit(1);
return 0;
}

cout<<"请输入数组元素:";
for(i=0;i<arrlength;i++)
{
cin>>arr[i];
}

maxsum=0;
sum=0;
for(i=0;i<arrlength;i++)
{
sum=sum+arr[i];//累加

if(sum<0)      //当前和小于0,重置为0
{
sum=0;
}

if(sum>maxsum) // 当前和大于最大和,则重置最大和
{
maxsum=sum;
}
}

if(maxsum==0)      //maxsum=0,说明数组中的数值均为负数
{
maxsum=arr[0];
for(i=1;i<arrlength;i++)
{
if(arr[i]>maxsum)//求出负数数组的最大值
{
maxsum=arr[i];
}
}
}
cout<<"最大子数组的和为:"<<maxsum<<endl;

return 0;

//for(i=0;i<arrlength;i++)
//{
//    sum=0;
//    for(j=0;j<arrlength;j++)
//    {
//        sum += arr[j];

//        if(sum<0)      //当前和小于0,重置为0
//        {
//            sum=0;
//        }

//        if(sum>maxsum)
//        {
//            maxsum=sum;
//        }
//    }
//}
//cout<<"最大子数组的和为:"<<maxsum<<endl;
//return 0;
}


四、结果截图











五、项目计划日志

周活动总结表

姓名:李俏 日期:2016年3月19日

日期 任务听课 编写程序阅读课本准备考试日总计
周日(3.20)

303060
周一

1203030180
周二

303060
周三

303060
周四

12030150
周五

18030210
周六

6030120
周总结

240360210

810
六、时间记录表:

学生: 李 俏 日期 :2016年3月12日

教师: 王建民 课程 :软件工程

日期

开始时间

结束时间

中断时间

净时间

活动

备注

3.21

16:30

17:00



30

编写程序

作业

20:10

20:40



30

阅读

作业

3.22

19:10

19:50

10

30

编写程序

作业

20:00

20:30



30

阅读

作业

3.23

14:30

15:30

30min

30

编写程序

作业

20:00

20:30



30

阅读

作业

3.24

18:50

19:20



30

编写程序

作业

20:00

20:30



30

阅读

作业

3.25

13:20

18:00

100

180

编写程序作业

21:10

21:40



30

阅读

作业

3.26

12:00

13:30

30min

60

编写程序

作业

七、缺陷记录日志:

学生 李俏,张莹荧

日期 2016年3月25日

教员 王建民

程序号 2

日期 编号类型引入阶段排除阶段修复时间修复缺陷
3.24 1计算设计编译10min
描述: 计算不出结果。
3.24 2结果编码编译5min
描述: 没有考虑纯负数数组。
3.24 3算法编码查资料、问同学30min
描述:时间复杂度不符合要求。
八、工作照片

小伙伴:张莹荧(http://www.cnblogs.com/zhyying/)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: