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

项目计划日志   
10.6 看ppt,熟悉内容。   
10.6下午,开始编程调试。   
10.7 运行调试,写博客。   
      
时间记录日志
日期开始时间结束时间中断时间净时间活动
10.69:0011:0020min1.5h查资料
10.78:0012:0030min3.5h查资料,编程
10.714:0018:001h3h编程,运行,调试
      
缺陷日志
时间缺陷
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     }


 

转载于:https://www.cnblogs.com/guoshaozhou/p/9752155.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值