求最大连续子数列和(只扫描一次数列)

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main(){
 6     int sum = 0;
 7     int num = 0;
 8     int shuzu[1000];
 9     cin>>shuzu[0];
10     while(cin.get() != '\n'){
11         num++;
12         cin>>shuzu[num];
13     }
14 
15     int t = 0;
16     for(int i = 0; i <= num; i++){
17         if(t < 0)
18             t = shuzu[i];
19         else
20             t = t + shuzu[i];
21 
22         if(sum < t)
23             sum = t;
24     }
25     cout<<sum<<endl;
26 
27     return 0;
28 }

例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,
因此输出为该子数组的和18。

posted @ 2016-03-22 22:11  hu983  阅读(191)  评论(0编辑  收藏  举报