zoukankan      html  css  js  c++  java
  • 结对开发——一维数组最大子数组判断溢出

    一 题目

      求一维数组最大子数组和

      要求:1000个数以上,整数

    二.设计思路

      最大子数组很好找到,但是子数组和的溢出问题很难解决。

      经过不断的思考,我得出了结论:

        溢出是程程序设计者设计时的不足所带来的错误。所以设计者要在编码时便高度警惕,预防溢出的发生,这才是最本质的解决问题的方法。就本题而言,我们设置了元素最大个数,以及其它输入要求,尽量避免溢出的发生。1000个数相加可以实现,但非要取1000个最大的数相加,那样的计算没有意义,不会在我们的生活学习中出现,这属于科研问题,交给大神们来解决吧。

    三,设计代码

    #include <iostream.h> 
    #include <stdlib.h> 
    #define MAX_LEN 2000 
    int main() 
    { 
        int i,j; 
        int len,max;    
        int VALUE_MAX=2147483580; 
        int sum=0;//求和变量 
        do{ 
            cout<<"请输入数组元素个数(小于2000):"; 
            cin>>len; 
        }while( (len>MAX_LEN) || len<=0); 
        int* Array=new int[len];//开辟数组空间 
        for(i=0;i<len;i++) 
            Array[i]=rand()%1000; 
        cout<<endl; 
        max=Array[0]; 
        for( i=0;i<len;i++) 
        { 
            sum=0; 
            for(j=i;j<len;j++) 
            { 
                sum=sum+Array[j]; 
                if(sum>max&&sum<VALUE_MAX)    
                    max=sum; 
                else if(sum>VALUE_MAX) 
                    break; 
            } 
        } 
      
        cout<<"最大子数组的和为:"<<max<<endl; 
      
        delete []Array; 
        return 0; 
    } 

    四,截图

    五,结对开发体会

    本次实验在之前做的基础上没法拓展,所以只能重新编写,这次我和伙伴的思路几乎差不多,但是考虑到溢出的情况,是因为在我俩范围之内没能解决,但是确实考虑到没有实际意义所以就”投机取巧“没实现该要求,通过本次结对开发又感受到一些不同的东西,就是没思路的时候通过队友之间相互提醒,相互启发可以适当的改变思路,没必要钻牛角尖!

  • 相关阅读:
    shell关闭指定进程
    linux tricks 之数据对齐。
    linux tricks 之VA系列函数.
    linux tricks 之 typeof用法.
    linux下notify机制(仅用于内核模块之间的通信)
    怎么判定一个mac地址是multicast还是unicast.
    linux tricks 之 ALIGN解析.
    fid解释
    c语言中宏定义#和 ##的作用:
    rebtree学习
  • 原文地址:https://www.cnblogs.com/lllzy/p/4379516.html
Copyright © 2011-2022 走看看