求子数组和最大值拓展
题目:返回一个整数数组中最大子数组的和。
要求: 要求程序必须能处理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字符串解决问题。
总结:当两个人结对开发时,会有少许的碰撞和摩擦,但最终能够交换意见和看法,将问题简单化,更快地解决问题。可见合作对软件团队开发的重要性。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。