题目:返回一个整数数组中最大子数组的和。(要求程序必须能处理1000 个元素)
1、题目:返回一个整数数组中最大子数组的和。
1 #include <iostream> 2 #include<stdlib.h> 3 #include<time.h> 4 using namespace std; 5 6 int main() 7 { 8 int i; 9 int a[10000]; 10 int max = 0; 11 int b = 0; 12 13 srand(time(NULL)); 14 cout<<"数组为:"<<endl; 15 for (i = 0; i<10000; i++) 16 { 17 a[i] = rand()*4294967296 ; 18 } 19 for (i = 0; i<10000; i++) 20 { 21 cout << a[i] << ‘\t‘; 22 } 23 cout << endl; 24 25 for (i = 0; i < 10000; i++) 26 { 27 b += a[i]; 28 if (b < 0) 29 b = 0; 30 if (b > max) 31 max = b; 32 } 33 if (max == 0) 34 { 35 max = a[0]; 36 for (i = 0; i < 10000; i++) 37 { 38 if (max < a[i]) 39 { 40 max = a[i]; 41 } 42 } 43 } 44 cout <<"最大子数组为:"<< max << endl; 45 system("pause"); 46 return 0; 47 }
6、运行截图:
无溢出时
7、实验感想:
可以看出程序有溢出时,运行结果会使每个元素显示为0,程序出错;而无溢出时,由于我们取数个数太多(10000个),是程序的运算时间增长很多,这让我们意识到,在进行大量数据处理的时候,所用算法的时间复杂度的重要性。
8、真相图:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。