zoukankan      html  css  js  c++  java
  • 返回一个整数数组中最大子数组的2

    题目:返回一个整数数组中最大子数组的和

    要求:

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

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

    3、 输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。

    4、要求时间复杂度为O(n)。

    思路:

      利用random函数产生随机数;

      利用for语句实现最大子数组的求和

    代码:

    #include<iostream>

    #include<stdlib.h>

    #include<iomanip>

    #include<time.h>

    using namespace std;

    #define Max  100000

    void main ()

    {   

        int n,array[Max];   

        cout<<"请输入数组的长度:";   

        cin>>n;   

        cout<<"产生的n个数为"<<endl;   

        for(int i=0;i<n;)   

            {               array[i]=-Max/10+rand()%(Max*2+1);   

                             cout<<setw(5)<<array[i]<<" ";   

                             i++;    if(i%5==0)     cout<<endl;   

           }   

           cout<<endl;   

           int sum=array[0],max=array[0];   

           for(int i=0;i<n;i++)   

           {       

                sum=sum+array[i];    

                if(sum<array[i])     

                       sum=array[i];    

               if (max<sum)     

                         max=sum;       

           }   

         cout<<"最大的子数组和是:"<<max<<endl;

    }

    截图:

    总结:

    random函数用法:

    random所在的头文件  stdlib.h
    int random(int num);
    random函数返回一个0~num-1之间的随机数. random(num)是在stdlib.h中的一个宏定义. num和函数返回值都是整型数.
    在c++中 可以用
    a+rand()%n产生由a~n的随机数
  • 相关阅读:
    顺序前缀改为随机性前缀 反转时间戳 反转年月日
    后台组件的治理思路
    干货 | 高耦合场景下,Trip.com如何做支付设计与落地
    每天响应数亿次请求,腾讯云如何提供高可用API服务?
    系统管理及操作命令
    远程连接及系统管理
    linux系统部署安装过程
    day 1 硬件组成概念及介绍笔记
    day 4
    day 3
  • 原文地址:https://www.cnblogs.com/mingning/p/4537638.html
Copyright © 2011-2022 走看看