题目:返回一个整数数组中最大子数组的和。
要求:
要求程序必须能处理1000 个元素;
每个元素是int32 类型的;
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
思路:
考虑到手动输入1000个元素所以在程序中由系统随机出1000个元素进行测试。代码与之前的代码差别不大。
程序代码:
1 #include2 #include 3 4 int maxSum(int* a, int n) 5 { 6 7 int sum=a[0]; 8 int b=0; 9 10 for(int i=0; i >n;27 cout<<"请输入数组的元素: "<
程序截图:
对代码溢出的测试:
将
int x; for(int i=0;i
修改为
for(int i=0;i>a[i]; }
程序截图:
感想:
2^31-1=2147483647, 代码的溢出范围为-2^31~2^31之间,超出即溢出。在程序的实现过程中,掌握了随机rand的使用方法,运用了调用函数,让程序变得“高大上”。但我们仍还有提升空间,让我们掌握更多的知识。