软工 课堂作业:选出一个整数组中最大子数组

项目计划日志      
10.6 看ppt,熟悉内容。      
10.6下午,开始编程调试。      
10.7 运行调试,写博客。      
           
时间记录日志
日期 开始时间 结束时间 中断时间 净时间 活动
10.6 9:00 11:00 20min 1.5h 查资料
10.7 8:00 12:00 30min 3.5h 查资料,编程
10.7 14:00 18:00 1h 3h 编程,运行,调试
           
缺陷日志
时间 缺陷
10.6

看基础,好多东西都忘记了,需要查询的东西多。进程缓慢。

设计思路:

从第一个数开始,依次与后面的数相加,形成子数组,

然后在比较数组的大小,选出最大的一个。

 1 #include <iostream> 
 2 using namespace std;
 3 int array[] = {2,3,-8,2,1,-4,}; //int array[] = {-7,6,-1,3,9,5};
 4 const int size = sizeof array / sizeof *array;
 5 int maxSubArray(int *array, int size)
 6 { 
 7     int max = -(1 << 31);
 8     int sum = 0;
 9     int index = 0; 
10     while (index < size)
11     {
12         sum += array[index];
13         if (sum > max)
14         {
15             max = sum; cout << "max: " << max << endl;
16         }
17         if (sum < 0)
18          
19             sum = 0; index++;
20         }
21         return max; 
22     } 
23     int main() 
24         {
25             int index = maxSubArray(array, size);
26             cout << "最大的是: " << index << endl;
27           
28     }


 

猜你喜欢

转载自www.cnblogs.com/guoshaozhou/p/9752155.html