数组中最大子数组的和(2)
题目: 返回一个整数数组中最大子数组的和
要求:
要求程序必须能处理1000 个元素;
每个元素是int32 类型的;
#include<iostream>
#include<cmath>
using namespace std;
void main()
{
int a[250009],b=0,s=0,i,l,n,c=2147483648;
cout<<"输入数组长度";
cin>>n;
for(i=0;i<n;i++)
{
l=rand()%2+1;//产生随机数组
const int q=pow(-1.0,l);
a[i]=q*rand()%1000000+1;
}
for(i=0;i<n;i++) //求子数组和最大值
{
if(b<0)
b=a[i];
else
b+=a[i];
if(s<b)
s=b;
}
cout<<endl;
cout<<s<<endl;
}
截图:
出现的问题:
当数组长度超过250000左右时出现bug,值返回0。
当数组中的数超出int32范围时出现bug,值返回0。
解决方案:利用string或char类型。
总结:
编程时编程规范十分重要,编程规范同样有好多要注意的地方,本次的测试中会出现好多不同的bug,都是编程过程中不注意的地方例如在定义int类型是我们一般就不会考虑int类型的取值,当超过这个范围又会出现什么样的错误,通过此次程序我认识到了编程规范的重要性,其实编程规范体现在很多的小的细节上,我们应该在平时注意养成习惯,正如老师所说将给我们好多的好处。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。