• 课堂作业第四周课上作业二


    题目要求:返回一个整数数组中最大子数组的和。
    要求:
    要求程序必须能处理1000 个元素;
    每个元素是int32 类型的;
    输入一个整形数组,数组里有正数也有负数。
    数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

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

    我的伙伴是侯涛亮,我负责程序分析,代码编程,他主要负责代码复审和代码测试计划

    工作照:

    设计思路:用随机数产生固定的个数为n,其中有负有正,for循环循环N次,默认最大子数组和为零,从a[0]开始使数组的每一个相加为k,再判断K是否大于最大子数组和Maxsum,大于是另maxsum=k;最后在判断k是否大于零,若小于零则让k=0;将数组定义为a【1000】这样可以处理一千个数,Int32 值类型表示值介于 -2,147,483,648 到 +2,147,483,647 之间的有符号整数,当大于该数时则会归零,可以用string类型来实现。

    出现问题:当数组过长或者数太大时会出现归零,数组长度不能超过250000。

    解决方案:用string字符串来解决大整数问题。

    代码:

    #include<iostream>
    #include<cmath>
    using namespace std;
    void main()
    {
    int a[25000],i,j,f,n;
    int MaxSum = 0;
    int k = 0;
    cout<<"请输入数组中数字的个数"<<endl;
    cin>>n;
    for(i=0;i<n;i++)
    {
    j=rand()%2+1;
    f=pow(-1.0,j);
    a[i]=f*rand()%100000;
    }

    cout<<endl;
    cout<<"最大子数组为";

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

    k += a[i];
    if(k > MaxSum)
    MaxSum = k;

    if(k < 0)
    k = 0;

    }

    cout<<MaxSum<<endl;
    }

    截图

    总结:数组长度不能过大,否则程序将无法运行。int32有一定的取值范围,当超过时要用string来解决。另外通过这次实验我也明白了合作的重要性。

  • 相关阅读:
    python challenge level 2
    python challenge level1
    近期很忙
    python challenge level 3
    链 小实验
    结构体小小应用
    结构体 弄成绩统计比较好
    HTC学习
    WEBFX XTREE学习笔记
    向dataset中添加一行记录,老是忘了,记下来
  • 原文地址:https://www.cnblogs.com/bingoing/p/4377519.html
Copyright © 2020-2023  润新知