求最大连续子数组之和

这是一道经典的面试题目。有如下数组: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 }
View Code

 

posted on 2017-08-16 10:50  ^~~^  阅读(171)  评论(0)    收藏  举报

导航