zoukankan      html  css  js  c++  java
  • “数组最大值求和2”分析报告

    “数组最大值求和2”分析报告

     

    一、设计思想

    1.定义一个数组元素个数可变的数组,用宏定义实现(a[n])。

    2.用rand函数产生正负随机数,存入数组中。

    3.定义一个二维数组(b[n][n]),用来依次存放各个子数组的值。

    4.找出二维数组中最大的值,就是最大的子数组的值。

    5.二维数组中的最大值的下标,就分别是最大子数组的起始下标和结束下标,比如b[2][4]是二维数组中最大的值,即最大子数组的下标就是2、3、4。

    二、开发过程(结组开发)

           我主要负责程序分析,代码编程,之前的程序能够处理的元素个数最多是五百个,离一千还差一半,如果按一千运行则程序会报错。我主要分析了一下两个方面:

           1.程序结果超出int的范围因此报错

           2.和二维数组的元素个数有关系

           针对第一个方面,我让随机数在一个固定的小范围中产生,结果还是报错,因此不是第一个问题。针对第二个问题,我把二维数组换成了一维数组,让这个一维数组依次存放每个子数组的和,后运行成功。因此应该是二维数组这方面出了问题。

     

    三、程序代码

    #include<iostream>
    #include<time.h>
    #define n 127293
    using namespace std;
    
    void main()
    {
        int a[n],i,w=0,b[n];
    
    
        srand((int)time(0));
    
        for(i=0;i<n;i++)
            a[i]=-rand()%36+25;
    
        for(i=0;i<n;i++)
            cout<<a[i]<<endl;
    
        for(i=0;i<n;i++)
        {
            w+=a[i];
            b[i]=w;
        }
    
        int t=b[0];
    
        for(i=0;i<n;i++)
        {
            if(b[i]>t)
                t=b[i];
        }
    
        
                cout<<"最大子数组的值为:"<<t<<endl;
                
    }

    四、结果截图

    五、总结

           当程序出现问题的时候一定要做好分析,有可能是哪方面出了问题,列一个可能出现问题的表出来。然后再针对每次的问题进行分析,分析如果真的是这方面出了问题,该怎么确定以及确定后该如何解决。 这次是第一次结组做程序,两个人想的确实比一个人想的要全面。分工明确也非常重要,一个人负责程序的编写,一个人负责代码的测试。在以后的编写程序的过程中,会注重两个人的交流和配合。

  • 相关阅读:
    HDU6060 RXD and dividing
    Knapsack in a Globalized World --多重完全背包
    hdu 6058 Kanade's sum
    矩形面积 HDU
    Bridge Across Islands POJ
    Manors HDU
    Harry Potter and J.K.Rowling HDU
    Polygons HDU
    Jungle Outpost HDU
    CRB and Farm HDU
  • 原文地址:https://www.cnblogs.com/meimiaozi/p/4383584.html
Copyright © 2011-2022 走看看