标签:
结束了 四则运算的所有内容 这次老师布置了 数组问题 求最大子数组的问题 课堂上 老师就已经提供了数种方案 并提出了时间复杂度的要求 于是和我的搭档找到了认为最为简便的算法
过程中和小于0,那么和最大的子数组不会包含前面子数组,之后将和归0,从下个元素重新开始计算
于之前的实验 理清思路 代码实现不算太难
代码如下
1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 int i,num; 7 cout << "请输入数组元素个数: " ; 8 cin >> num; 9 int *arr = new int[num]; 10 cout << "请依次输入数组元素" << endl; 11 for (i = 0; i < num; i++) 12 { 13 cin >> arr[i]; 14 } 15 int MaxSum = 0; 16 int CurSum = 0; 17 for (i = 0; i<num; i++) 18 { 19 CurSum += arr[i]; 20 if (CurSum > MaxSum) 21 { 22 MaxSum = CurSum; 23 } 24 if (CurSum < 0) 25 { 26 CurSum = 0; 27 } 28 } 29 cout <<"该数组中最大子数组的和是: "<< CurSum<<endl; 30 system("pause"); 31 32 return 0; 33 }
经验证结果正确!
标签:
原文地址:http://www.cnblogs.com/lyhao/p/5323653.html