• 最大子数组和


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

    代码:

    #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   120 60 300
    周一 200 60 60   30 350
    周二 500         500
    周三 100 60 30 60 30 280
    周四 400         400
    周五 300 60 30   30 420
    周六   120 60 120   240
    周总计 1500 420 180 300 150 2490
    时间记录日志:
     
    日期 开始时间 结束时间 中断时间 净时间 活动 备注
    3.20 16:00 17:30   90 设计思路 设计子数组求和的思路
    3.21 8:00 10:00 20 100 编程 根据昨天思路编写程序
      16:00 17:20   80 编程 调试程序,修改问题
    3.22 15:00 17:00 10 110 编程 修改思路简便程序
      20:00 21:00   60 编程 调试程序
    3.23 10:00 11:00   60 实验报告 书写实验报告
    缺陷记录日志:
     
    日期 编号 类型 引入阶段 排除阶段 修复时间 修复缺陷
    3.21 1 20 编码 编译 5min  
      描述:pow()函数中没有使用double型
      2 20 编码 编译 1min  
      描述:使用未定义变量
      3 20 编码 编译 1min  
      描述:使用未定义变量
  • 相关阅读:
    【freesql】使用Ado执行sql语句查询结果集时参数化举例
    阿里云共享流量包分析脚本
    使用@Autowired注解引入server服务层方法时报错
    druid介绍及使用
    (已解决)org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; neste
    navicat激活及手动激活方案
    Navicat15 试用期过期解决办法
    alibaba Cloud Linux安装mysql
    我的第一个SpringBoot
    Information:java: Errors occurred while compiling module ‘xxx‘
  • 原文地址:https://www.cnblogs.com/lingxi/p/4357542.html
Copyright © 2020-2023  润新知