码迷,mamicode.com
首页 > 编程语言 > 详细

求子数组和最大值拓展

时间:2015-03-30 13:05:27      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

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

要求: 要求程序必须能处理1000 个元素; 每个元素是int32 类型的。

输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。

我的组员是朱少辉,我负责代码复审和代码测试。

设计思想:将数组长度范围扩大能够处理1000个数,而Int32 值类型表示值介于 -2,147,483,648 到 +2,147,483,647 之间的有符号整数,当大于该数时则会归零,可以用string类型来实现。

代码:#include<iostream>

#include<cmath>
using namespace std;
void main()
{
         int a[25000],i,j,f,n;
         int MaxSum = 0;
         int k = 0;
         cout<<"请输入数组中数字的个数"<<endl;
         cin>>n;
         for(i=0;i<n;i++)
         {
                   j=rand()%2+1;
                   f=pow(-1.0,j);
                   a[i]=f*rand()%100000;
          }

         cout<<endl;
         cout<<"最大子数组为";

        for(i=0;i<n;i++)
        {

                   k += a[i];
                   if(k > MaxSum)

                   {
                   MaxSum = k;
                    }
                   if(k < 0)

                   {
                   k = 0;

                   }

         }

         cout<<MaxSum<<endl;
}

截图:

技术分享

 

工作照:

技术分享

 出现问题:当数值过大或者数组长度过大时,计算机会报错,因为超出了int32类型的范围,所以可用String字符串解决问题。

总结:当两个人结对开发时,会有少许的碰撞和摩擦,但最终能够交换意见和看法,将问题简单化,更快地解决问题。可见合作对软件团队开发的重要性。

求子数组和最大值拓展

标签:

原文地址:http://www.cnblogs.com/houtaoliang/p/4377472.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!