求最大连续子数列和(只扫描一次数列)
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。