求最大连续子数组之和
这是一道经典的面试题目。有如下数组:1,-2,3,10,-4,7,2,-5。需要求出最大的连续子数组之和。
分如下步骤:
第一:先挑选第一个元素作为最大子数组之和max。
第二:遍历整个数组,迭代每一个元素并相加。
第三:如果当前元素和current大于max,那么max=current。
第四:如果current==0,那么将current 置0,从当前元素重新累加。
如下代码:
1 #include <iostream> 2 3 using namespace std; 4 5 int main() 6 { 7 int a[] = {1,-2,3,10,-4,7,2,-5}; 8 cout << "Hello world!" << endl; 9 10 int max=a[0]; 11 int curr = 0; 12 int len = sizeof(a)/sizeof(int); 13 for(int i=0;i<len;i++) 14 { 15 curr = a[i]+curr; 16 if(curr > max) 17 max = curr; 18 if(curr < 0) 19 curr = 0; 20 cout << max << endl; 21 22 } 23 cout << max << endl; 24 return 0; 25 }
浙公网安备 33010602011771号