1.题目:
返回一个整数数组中最大子数组的和。
2.要求:
1)要求程序必须能处理1000个元素;
2)每个元素都是int32类型的。
3.设计思路:
处理1000个元素时让用户自己输入想要的数组长度,看看运行时出处理时间的长短,再在源程序中改善这一问题。
处理大数溢出时,由于随机函数生成的数不算太大,我们尽量让其最终存入数组的元素接近最大范围,进而求和时才可能出现大数溢出的情况。
4.源代码:
1 #include2 #include 3 using namespace std; 4 #include 5 #include 6 #define MAX 100000 7 int main() 8 { 9 int k,t=0,o=0;10 int n=0,m=0;11 int b[MAX];12 int a[MAX];13 cout<<"请输入数组中整数的个数:"< >k;15 srand(time(0));16 for(int i=0;i >a[i];21 }22 23 for(int l=1;l k-1)30 {31 break;32 }33 else34 m=m+a[j];35 }36 b[n]=m;37 m=0;38 n=n+1;39 }40 }41 int max=b[0];42 for(i=1;i =r&&r>=0)59 {60 m=m-r;61 t=t+1;62 r=r-1;63 }64 if(m==0&&r>0&&j!=k-1)65 {66 m=m+r+1;67 break;68 }69 if(m==0&&r==0&&t==k)70 {71 m=m+1;72 break;73 }74 }*/75 cout<
5.结果截图:
6.心得体会:
本次重点在于大数溢出的解决,我们首次实现大数溢出时多次出现程序异常关闭的情况,即使可以运行时也不提示错误。对于这一点的解决,我们想到了数组元素随机生成过大时则重新生成,也可以对结果进行判断,主动提示错误进而解决。但我们对于真正解决大数溢出还没有具体的解决方案,这算是我们的不足吧,日后一定多多注意这一点。