- #include<iostream>
- using namespace std;
- int max(int a,int b)
- {
- if(a>b)
- {
- return a;
- }
- else
- {
- return b;
- }
- }
- int maxsum(int a[], int n)
- { int i;
- int maxsofar = 0; //maxsofar 记录到目前为止的的最大值
- int maxendinghere = 0; //maxendinghere 记录从当前位置开始往前几个连续的数的和的最大值
- for (i = 0; i < n; i++)
- {
- maxendinghere = max(maxendinghere + a[i], 0);
- maxsofar = max(maxsofar, maxendinghere);
- }
- return maxsofar;
- }
- int main()
- {
- int n, i=0;
- cout<<"请输入个数:";
- cin>>n;
- cout<<"请输入数组:";
- int a[1000]={0};
- for(i=0;i<n;i++)
- {
- cin>>a[i];
- }
- int max=maxsum(a, n);
- cout << "最大子数组的和为:" << max << endl;
- return 0;
- }
来源: http://www.bubuko.com/infodetail-2807472.html