返回一个整数数组中最大子数组的和

小组成员:

                  姓名:许兴华                 学号: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、百度出来的

九、总结

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

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

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

 

 

 

 

 

 

 

 

posted @ 2018-10-14 17:11  样样样样。  阅读(114)  评论(0编辑  收藏  举报