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

要求:
  1.要求程序必须能处理1000 个元素;
  2.每个元素是int32 类型的,出现子数组之和大于整型表示的最大范围会出现什么情况;
  3.输入一个整形数组,数组里有正数也有负数。
  4.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
  5.求所有子数组的和的最大值。要求时间复杂度为O(n)。
实现代码:

#include<iostream>
#include<time.h>
#include<conio.h>
#define N 1000
using namespace std;
void RandIn(int IntNum,int A[])
{
cout<<"整数内容"<<endl;
for(int i=0;i<IntNum;i++)
{
A[i]=-(int)rand()%201+100;
cout<<A[i];
if(i%5==4)
cout<<endl;
else
cout<<'\t';
}
}
void SelMax(int IntNum,int A[], int &sum)
{
int buffer=0;
for(int j=0;j<IntNum;j++)
{
buffer+=A[j];
if(buffer<0)
{
buffer=0;
}
if(sum<buffer)
{
sum=buffer;
}
}
}
void main()
{

int IntNum;
int A[N];
int q=0;
while(q==0)
{
int sum=0;
srand((unsigned)time(NULL));
cout<<"请输入整数的个数:";
cin>>IntNum;
RandIn(IntNum,A);
SelMax(IntNum,A,sum);
cout<<endl;
cout<<sum<<endl;
cout<<"是否继续测试(输入0则继续否则停止)";
cin>>q;
system("cls");
}
}

最后附上帅气自拍合照。啊哈哈哈

总结心得:在这次完成作业的过程中,由于是第一次通过合作完成编程软件,刚开始我们也有点小分歧,小别扭。但我们通过商讨,并且借鉴了一些其他人的设计思路,最终统一了设计思路,完成了这次作业。通过这次课下练习,完成作业的过程,我也学到了很多,发现了很多学习上的问题,比如上课一定要注意听讲,并且在编程时一定要细心才能避免大的错误。。。

 

 

 

 

 

 

 

 

 

 

 

posted @ 2018-10-14 17:23  皇后大道东  阅读(110)  评论(0编辑  收藏  举报