标签:
题目:返回一个整数数组中最大子数组的和
1 #include<iostream> 2 #include<string> 3 #include<ctime> 4 #define N 1000 5 using namespace std; 6 7 int MaxSum(int *arr, int size) 8 { 9 int MaxSum = 0; 10 int b = 0;//b是子数组的和 11 12 for (int i = 0; i < size; i++) 13 { 14 if (b < 0) 15 b = arr[i];//当子数组和小于0时,且无论与后面数组如何相加,和肯定小于后一段数组之和,此时,将b重新赋值,置为下一个元素 16 else 17 b += arr[i]; 18 if (MaxSum < b) 19 MaxSum = b; 20 } 21 return MaxSum; 22 } 23 24 int main() 25 { 26 int arr[N]; 27 srand(time(0)); 28 for (int j = 0; j < N; j++) 29 { 30 arr[j] = rand() % 1000-500; 31 cout << arr[j] << " "; 32 33 } 34 cout <<"最大子数组的和为:"<< MaxSum(arr, N) << endl; 35 return 0; 36 }
感悟:在编程的时候不仅仅是完成任务目标就可以,更应该考虑该程序的应用范围,继而进行优化
标签:
原文地址:http://www.cnblogs.com/SanShaoS/p/4386609.html