最大子数组和

设计思路:利用随机数产生随机数组,输入控制数组长度,依次计算数组前面数的和如果出现负数则更新使这个数为数组中的下一个数在继续刚才的运算,开始令最大的子数组和为零后与刚刚产生的数组和比较如果比之小泽则更新最大子数组和的值为比较中较大的数,直到循环结束。

代码:

#include<iostream>
#include<cmath>
using namespace std;

void main()
{
 int a[100],b=0,s=0,i,n,l,q;
 cout<<"输入数组长度";
 cin>>n;
 for(i=0;i<n;i++)
 {
  l=rand()%2+1;//产生随机数组
        const int q=pow(-1.0,l);
  a[i]=q*rand()%100+1;
  cout<<a[i]<<" ";
 }
 for(i=0;i<n;i++) //求子数组和最大值
    { 
        if(b<0)
            b=a[i]; 
        else 
            b+=a[i]; 
        if(s<b) 
            s=b; 
    }
 cout<<endl;
 cout<<s<<endl;


}

截图:

 总结:通过本次的编程本来看似复杂的程序也会有简单的方法能解决,本次的子数组求和要求时间复杂度为O(n)开始的思路中总是时间复杂度为O(n2),后来的调试与思考讨论终于有了简便的方法,这让我意识到了算法的重要性。

项目计划总结:
日期/任务听课编程阅读课本课余活动查阅资料日总计
周日 120 12060300
周一2006060 30350
周二500    500
周三10060306030280
周四400    400
周五3006030 30420
周六 12060120 240
周总计15004201803001502490
时间记录日志:
 
日期开始时间结束时间中断时间净时间活动备注
3.2016:0017:30 90设计思路设计子数组求和的思路
3.218:0010:0020100编程根据昨天思路编写程序
 16:0017:20 80编程调试程序,修改问题
3.2215:0017:0010110编程修改思路简便程序
 20:0021:00 60编程调试程序
3.2310:0011:00 60实验报告书写实验报告
缺陷记录日志:
 
日期编号类型引入阶段排除阶段修复时间修复缺陷
3.21120编码编译5min 
 描述:pow()函数中没有使用double型
 220编码编译1min 
 描述:使用未定义变量
 320编码编译1min 
 描述:使用未定义变量

转载于:https://www.cnblogs.com/lingxi/p/4357542.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值