zoukankan      html  css  js  c++  java
  • 郭少周和陈泽两人合作课堂练习和课下作业

     1.要求程序必须能处理1000个元素;

    2.每个元素是int32类型的,出现子数组之和大于整型表示的最大范围会出现什么情况;

    3.输入一个整形数组,数组里面既有正数也有负数;

    4.数组中连续的一个或多个整数组成一个字数组,每个子数组都有一个和;

    5.求所有子数组的和的最大值,要求时间复杂度为O(n)。

    设计思想:

    1.随即生成数组(含有正数和负数)。

    2:求所有子数组,按数组长度进行数组的划分。
    计算:从第一个数开始做加法,若和大于第二个数,则继续加下一个数(若加上第三个数的和大于第三个数则重复进行此操作;小于第三个数,则舍掉前面的所有数,并继续重复进行此操作);若小于第二个数,则舍掉第一个数。

    出现的问题:

    1.在生成随机数的时候,正负数没有一起生成。

    2.当出现子数组之和大于整型表示的最大范围会出现溢出情况,运行结果都为零

    3.软件没有妥当保存导致中途代码糗事,稍微影响了完成进度。

    程序源代码:


    #include<iostream>
    #include<time.h>
    #include<conio.h>
    #define N 1000
    using namespace std;
    void RandIn(int IntNum,int A[])   //随机生成数组
    {
        cout<<"整数内容"<<endl;
        for(int i=0;i<IntNum;i++)
        {
            A[i]=rand()-rand();
            cout<<A[i];  
            if(i%20==4)
                cout<<endl;
            else
                cout<<' ';
        }
    }
    void SelMax(int IntNum,int A[],int &sum)
    {
        auto buffer=0; 
        int count1=0;        //求和的数值个数
        int count2=0;    
        for(int j=0;j<=IntNum;j++)
        {
            if(j==IntNum)
            {
                j=0;
            }
            buffer+=A[j];
            count1++;
            count2++;
            if(buffer<0)    
            {
                buffer=0;
                count1=0;
            }
            if(sum<buffer)//sum始终记录下存在的最大和
            {
                sum=buffer;
            }
            
            {
                break;
            }
        }
    }
    void main()
    {
         
        int IntNum;
        int A[N];
        int q=0;
        while(q==0)
        {
            auto sum=0;
            srand((unsigned)time(NULL));
            cout<<"请输入数组元素的个数:";
            cin>>IntNum;
            RandIn(IntNum,A);
            SelMax(IntNum,A,sum);
            cout<<endl;
            cout<<sum<<endl;
            cout<<"是否继续测试(输入0则继续否则停止)";
            cin>>q;
            system("cls");
        }
    }
     
    运行结果:

    当出现子数组之和大于整型表示的最大范围时会出现溢出现象,运行结果都为零:

    心得: 团结就是力量,相比于个人项目,团体协作的优势十分明显,但编程能力方面还是太弱这是硬伤,需要借助网络资源帮助,经过此次编程使得我俩的部分计算机语言运用的更加熟练,理解更加透彻,以后会多加练习努力学好这门课程,学以致用

  • 相关阅读:
    常用Linux命令:ls/cd/pwd/mkdir/rm/mv/cp
    设计模式(5)---代理模式
    设计模式(4)---装饰模式
    设计模式(3)---基本原则
    设计模式(2)---策略模式
    设计模式(1)---简单工厂模式
    linux系统硬件配置查看方法
    boost.asio系列(一)——deadline_timer
    ubuntu 安装JDK
    计算图像数据集的RGB均值
  • 原文地址:https://www.cnblogs.com/czlyl999/p/9787082.html
Copyright © 2011-2022 走看看