整数数组中最大子数组的和

编程思路:从该数组里随机生成的数中,从最后一个开始进入循环,如果这个数大于0,定义一个变量sum,并初始化它的值为0,把数组里的数加到sum上,如果sum的值大于max_sum(即最大子数组的和,初始化为0),把sum的值赋给max_sum,如果sum的值小于0,令sum的值为0,最后输出最大子数组的和;

程序代码:

#include <iostream>

#define N 10

using namespace std;

void main()

{

 int a[N];//定义一个数组

   cout<<"数组的所有成员有:"<<endl;

 for(int i=0;i<N;i++)

 {

  a[i]=rand()%N-N/2;  

 cout<<a[i]<<" ";  

}

 int sum=0,max_sum=0;

   for(int i=0;i<N;i++)  

{  

 sum=sum+a[N-i-1];  

 if(a[N-i-1]>=0)  

 {  

  if(max_sum<sum)   

  max_sum=sum;  

  if(sum<0)  

   sum=0;  

 }

 }

 cout<<endl;  

cout<<"最大子数组的和为:"<<max_sum<<endl;

}

结果截图:

总结:使用rand()函数随机生成数的时候,它会生成0-1之间的数,如果对他进行取余运算即rand()%N,则会生成0-N之间的数,要让它随机生成的数中有负数的话,要在它的基础上减去N的一半即rand()%N-N/2;

学生:陈杰 日期:2015/3/23  教师:王建民 课程:软件工程概述

日期

开始时间

结束时间

中断时间

净时间

活动

备注

3/21

10:00

11:00

60

编程序

3/22

14:00

15:00

20

40

查错

3/23

21:10

21:00

30

发博客

 

 缺陷记录日志:

日期

编号

类型

引入阶段

排除阶段

修复时间

修复缺陷

22/3

1

随机生成负数

编码

编译

20

查找资料

   22/3

2

连续子数组

编码

编译

50

仔细思考

 周活动总结表:

活动

上课

编写代码

看书

休息娱乐

总计

 周一

480

480

周六

70

400

470

周日

100

50

350

500

总计

480

170

50

750

1450

原文地址:https://www.cnblogs.com/chenjie00/p/4359431.html