zoukankan      html  css  js  c++  java
  • 结对开发-- 一维数组求和最大的子数组的大数溢出问题

    结对人员:韩雪东,高扬

    一、设计思路

       对于大数溢出问题开始很迷茫,不大懂该干什么,思路匮乏。因为只要溢出这个数就不会被存储被改变,这样导致很难去判断溢出后该怎样做,但后来我们改变了一下思路,采用逆向思维,首先找到能存储的最大数,用它来减去将要运行的数,从而与即将要加的数比较,如果小了咋说明相加后会产生溢出,直接结束程序。

    二、源代码

    // ceshi.cpp : Defines the entry point for the console application.
    //作者:韩雪东,高扬
    //时间:2015/3/29
    
    //#include "stdafx.h"
    #include "stdio.h"
    #include "stdlib.h"
    #include "time.h"
    
    int shuchu(int m[],int szcdx,int xhy)//m[]表示要测试的数组,szchx表示数组长度,xhy表示循环条件
    {
        int t,p;
        int max,sum;
        //缓存数组赋值
        int c[10];
        int v[10];
        for(t=szcdx-xhy-1;t<szcdx;t++)
        {
            c[t-szcdx+xhy+1]=m[t];
        }
        //循环
        for(t=xhy;t>=0;t--)
        {
            sum=0;
            for(p=0;p<=t;p++)
            {
                if(2147483647-sum<c[p])
                {
                    printf(" 数值过大 ");
                    system("PAUSE");
                    
                }
                sum=sum+c[p];
            }
            v[t]=sum;
            
            
            
        }
        //循环输出最大值
        max=v[0];
        for(t=0;t<xhy+1;t++)
        {
            if(max<=v[t])
            {
                max=v[t];
            }
            printf(" %d  ",v[t]);
        }
        
        return max;
    }
    
    int main(int argc, char* argv[])
    {
        srand(time(NULL));
        int a[10];
        for(int j=0;j<10;j++)
        {
            a[j]=rand()%100000+20000000;
        }
    
        int maxx[10];
        
        for(int i=9;i>=0;i--)
        {
            printf("包含数组中第%d个数在内的所有相邻子数组的和:",10-i);
            maxx[i]=shuchu(a,10,i);
            printf("
    %d
    
    ",maxx[i]);
        
        }
        int maxxx=maxx[0];
        for(i=0;i<10;i++)
        {
            if(maxxx<=maxx[i])
            {
                maxxx=maxx[i];
    
            }
        }
        printf("
    
    该数组的所有子数组的和的最大值:%d
    
    ",maxxx);
        return 0;
    }

    三、结果截图

    四、心得体会

      这是老师对我们程序完善性的考验,以前基本没有考虑过这种情况,我想我们的思路可能存在着漏洞,但这是我们两个人经过很长时间讨论,网上查资料,最后的结果,即使不怎么好,但也是我们共同努力的结果,值了。

    五、附图

  • 相关阅读:
    记一次文件上传报错解决过程The temporary upload location is not vali
    Redis反序列化LocalDateTime时报错
    Redis连接池Lettuce Jedis 区别
    Java获取时间打印到控制台
    Java多线程之volatile关键字
    Java多线程之Future,有返回值的线程
    ccf集合竞价
    增广路径求解最大流
    2016年9月ccf
    hash表的建立和查找
  • 原文地址:https://www.cnblogs.com/gaoyang110/p/4376477.html
Copyright © 2011-2022 走看看