zoukankan      html  css  js  c++  java
  • 软件工程结对开发之求一维数组中连续最大子数组之和2

    一、题目要求

    题目:返回一个整数数组中最大子数组的和。
    要求:
    要求程序必须能处理1000 个元素;
    每个元素是int32 类型的;
    输入一个整形数组,数组里有正数也有负数;
    数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和;
    求所有子数组的和的最大值。要求时间复杂度为O(n);
    结果溢出之后能判断。
    二、设计思想
    在求最大连续子数组时同样用动态法,对于新增的要求,可以增大随机产生数的倍数,如果结果溢出则输出溢出提示字样,其中int类型rand()随机产生数范围是0~32767,int32最大数是2147360000。
    三、代码
    #include<iostream.h>
    #include<stdlib.h>
    #include<time.h>
    void main()
    {
        while(1)
        {
            int length,temp;
            int *arr=new int[length];
            cout<<"请输入该数组长度:";
            cin>>length;
            //cout<<"请输入该数组:";
            srand((unsigned)time(NULL));
            for(int i=0;i<length;i++)
            {
                arr[i]=rand()*10000;
                temp=rand()%2;
                if(temp==0)
                {
                    arr[i]=arr[i];
                }
                else
                {
                    arr[i]=-arr[i];
                }
                cout<<arr[i]<<"	";
            }
            int result = arr[0];
            int sum = arr[0];
            for(i=1;i<length;i++)
            {
                if (sum > 0)
                {
                    sum += arr[i];
                }
                else
                {
                    sum =arr[i];
                }
                if (sum >result)
                    result = sum;
            }
            if(result<2147360000||result==2147360000)
            {
                cout<<"该数组中最大连续子数组之和是:"<<result<<endl;
            }
            else
            {
                cout<<"超出最大范围溢出!"<<endl;
            }
            cout<<"----------------------------------------"<<endl;
        }
    }

    四、测试截图

    当输入数组长度为1000时没有溢出

    当输入数组长度为2000时发生溢出

    五、总结

    以前没考虑到内存溢出情况,现在考虑溢出就得增大范围,溢出是个常见的问题,以后需要注意这种情况,对于溢出没办法解决只能提示溢出,在产生随机数时用的直接乘以10000导致产生的数后四位都是0000,有缺陷有待进一步改进。

    六、工作合影

     

  • 相关阅读:
    Trades FZU
    H
    Coconuts HDU
    初始化Linux数据盘、磁盘分区、挂载磁盘(fdisk)
    虚拟机硬盘vmdk压缩瘦身并挂载到VirtualBox
    docker创建tomcat容器无法正常访问
    centos7一步一步搭建docker tomcat 及重点讲解
    docker配置国内阿里云镜像源
    代理模式(2):动态代理
    代理模式(1):静态代理
  • 原文地址:https://www.cnblogs.com/2015tan/p/4376504.html
Copyright © 2011-2022 走看看