3、软件工程结对开发之求一维数组中连续最大子数组之和并判断溢出
2015-03-29 22:37
204 查看
一、题目要求
题目:返回一个整数数组中最大子数组的和。
要求: 要求程序必须能处理1000 个元素;
每个元素是int32 类型的;
输入一个整形数组,数组里有正数也有负数;
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和;
求所有子数组的和的最大值。要求时间复杂度为O(n);
结果溢出之后能判断。
二、设计思想
在我们的前一个程序中,由于int类型rand()随机产生数范围是0~32767,所以产生的1000个数较小,不会产生溢出。但我们通过查资料得知int32最大数是2147360000即2^31,如果结果溢出则提示溢出。
三、源代码
四、结果截图
五、实验体会
以前我们做实验的时候,总是想的太天真,理所当然的认为用户输入的一定是按我们的要求输入的,但现实情况却绝非如此,对于大数溢出问题我们考虑不周,还有其他的细节问题我们有很多没有考虑到。当输入数组的长度较大时,很可能会溢出,以后要多多注意!
六、合作照片
题目:返回一个整数数组中最大子数组的和。
要求: 要求程序必须能处理1000 个元素;
每个元素是int32 类型的;
输入一个整形数组,数组里有正数也有负数;
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和;
求所有子数组的和的最大值。要求时间复杂度为O(n);
结果溢出之后能判断。
二、设计思想
在我们的前一个程序中,由于int类型rand()随机产生数范围是0~32767,所以产生的1000个数较小,不会产生溢出。但我们通过查资料得知int32最大数是2147360000即2^31,如果结果溢出则提示溢出。
三、源代码
#include<iostream.h> #include<stdlib.h> #include<time.h> void main() { while(1) { int length,temp; int *arr=new int[length]; cout<<"请输入该数组长度:"; cin>>length; //cout<<"请输入该数组:"; srand((unsigned)time(NULL)); for(int i=0;i<length;i++) { arr[i]=rand()*10000; temp=rand()%2; if(temp==0) { arr[i]=arr[i]; } else { arr[i]=-arr[i]; } cout<<arr[i]<<"\t"; } int result = arr[0]; int sum = arr[0]; for(i=1;i<length;i++) { if (sum > 0) { sum += arr[i]; } else { sum =arr[i]; } if (sum >result) result = sum; } if(result<2147360000||result==2147360000) { cout<<"该数组中最大连续子数组之和是:"<<result<<endl; } else { cout<<"超出最大范围溢出!"<<endl; } cout<<"----------------------------------------"<<endl; } }
四、结果截图
五、实验体会
以前我们做实验的时候,总是想的太天真,理所当然的认为用户输入的一定是按我们的要求输入的,但现实情况却绝非如此,对于大数溢出问题我们考虑不周,还有其他的细节问题我们有很多没有考虑到。当输入数组的长度较大时,很可能会溢出,以后要多多注意!
六、合作照片
相关文章推荐
- 软件工程结对开发——一维最大子数组求和溢出问题
- 1、软件工程结对开发之求一维数组中连续最大子数组之和
- 5、软件工程结对开发之求一维数组中连续最大子数组之和
- 软件工程结对开发之求一维数组中连续最大子数组之和2
- 4、软件工程结对开发之求一维数组中连续最大子数组之和
- 结对开发——一维数组最大子数组判断溢出
- 2、软件工程结对开发之求二维数组中连续最大子数组之和
- 软件工程结对开发之求一个或者多个数组中连续最大子数组之和3
- 体验结对开发的乐趣(3)--(一维数组求最大子数组的和溢出问题)
- 软件工程结对开发之求二维数组中连续最大子数组之和
- 软件工程结对开发之求一个数组中连续最大子数组之和
- 结对开发之求最大子数组的溢出问题
- 二维数组最大子数组的和 结对开发 溢出问题
- 结对开发—一维数组之大数溢出
- 结对开发4----最大子数组(大数溢出)
- 结对开发--循环一维数组求最大子数组的和
- 软件工程课堂训练——结对开发之环数组最大和
- 结对开发-- 一维数组求和最大的子数组的大数溢出问题
- 结对开发之求最大数组溢出问题
- 结对开发——求环形一维数组最大子数组的和