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

    小组成员:

                      姓名:许兴华                 学号:20160700

                                 卢萌                              20160702

    一、实验要求

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

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

    两人结对完成编程任务。

    一人主要负责程序分析,代码编程。

    一人负责代码复审和代码测试计划。

    发表一篇博客文章讲述两人合作中的过程、体会以及如何解决冲突(附结对开发的工作照)

     二、设计思想

    sumsofar从初值0变为到目前为止的最大子数组的和,maxendinghere记录从当前位置开始往前几个数的和的最大值,比较sumsofar和maxendinghere,把最大值赋予sumsofar

    三、源代码程序

    #include <stdlib.h>
    #include<iostream>
    using namespace std;
    int max(int a,int b)
    {
        if(a>b)
        {
           return a;
        }
        else
        {
           return b;
        }
    }
    int maxsum(int a[], int n)
    {
        int i;
        int maxsofar = 0;  //maxsofar记录到目前为止的的最大值
        int maxendinghere = 0; //maxendinghere记录从当前位置开始往前几个连续的数的和的最大值
        for (i = 0; i < n; i++)
        {
            maxendinghere = max(maxendinghere + a[i], 0);
            maxsofar = max(maxsofar, maxendinghere);
        }
        return maxsofar;
    }
    int main()
    {
        int n, i=0;
        cout<<"请输入个数:";
        cin>>n;
        cout<<"请输入数组:";
        int a[100000]={0};
        for(i=0;i<n;i++) 
        {
            cin>>a[i];
        }
        int max=maxsum(a, n);
        cout << "最大子数组的和为:" << max << endl;
        system("pause"); 
        return 0;
    }
     

    四、程序运行截图

     

    五、超出int32范围

    现象:计算出错

    ,如图:

     六、时间记录日志

    七、遇到的困难

    1、不懂int32啥意思

    2、没写分号,大括号和分号要在英文状态下

    3、程序运行中出现闪退

    八、解决方法

    1、查资料,问同学

    2、调试出来的

    3、百度出来的

    九、总结

    在编写程序的时候,要认真仔细,注意中英文状态的切换;

    要边调试边写程序,避免最后代码过多,不容易寻找错误;

    编写程序的过程中,要适量的写注释,避免思路丢失,时间一长,自己也看不懂。

  • 相关阅读:
    Iptables 之二扩展模块 nat
    sudo 命令
    7、CentOS6 编译安装
    MySQL5.7 基础之二 DCL DML
    SQL Server 2008R2安装
    6、httpd2.4 编译安装LAMP
    MySQL 基础之一
    gulp
    msbuild
    inno setup
  • 原文地址:https://www.cnblogs.com/1756696425ss/p/9783967.html
Copyright © 2011-2022 走看看