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

1、题目:

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

2、要求:

    输入一个整形数组,数组里有正数也有负数。

    数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

    求所有子数组的和的最大值。要求时间复杂度为O(n)。

3.开发过程及思路:

    我的搭档是吴论,刚开始我们两个想的都比较简单而且比较统一,只是想用一个for循环来输出每组的和,在用一个比较的函数来求出最大值。但是我们的想法太简单,后来经过我们两人的商讨,决定用循环的嵌套来实现每一组数值的求和。在比较函数中我们俩也出现了分歧,一开始他想把比较函数放在循环中,temp的值每次定义也放在里边,结果总是输出单个值。最后我们把temp 的初值定义在了主函数前边,实现了程序的正常运行。

4.程序代码:

#include<iostream.h>

int main()

{

 

    int a[10];

 

    int m;           //m是每组个数

 

    int *sum=new int[10];
    cout<<"请输入数组:"<<endl;

 

    cout<<"*********************************"<<endl;

 

    for(int i=0;i<10;i++)

 

    {

 

        cin>>a[i];

 

    }

 

    cout<<"*********************************"<<endl;

 

    cout<<"请输入每组个数:"<<endl;

 

    cin>>m;

 

    cout<<"*********************************"<<endl;

 

    int temp=0;

 

    for(int n=0;n<m;n++)

 

    {

 

        temp=temp+a[n];

 

    }

 

    for(int k=0;k<=(10-m);k++)

 

    {

 

        sum[k]=0;

 

        for(int j=k;j<(k+m);j++)  //a[k]是每组第一个数        {

 

            sum[k]=sum[k]+a[j];

 

        }

 

        if(sum[k]>temp)

 

        {

 

            temp=sum[k];   

 

        }   

 

    }

 

    cout<<"最大和为: "<<temp<<endl;

 

    cout<<"*********************************"<<endl;

 

    return 0;

 

}

  

5.运行结果截图:

6.感想:

    两个人结组开发,在思路上能够互相借鉴,有个人进行讨论也能加快程序的编写速度。最让我感受深刻的就是有的时候自己一个人编程没有特别大的动力和积极性,遇到一个困难总是调不出来的话就容易失去信心而放弃。两个人一起来完成这个项目的话,调动了我的积极性,总是觉得不能在集体里不干活,两个人一起来解决一个问题,思路也会很活跃,很专心。所以能在很少的时间里完成这个程序。 

 

转载于:https://www.cnblogs.com/dgj1314/p/5323343.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值