5
-1 0 1 2 3
6
例1:
数组 m[]: -1 0 1 2 3
数组 c[]: -1 0 1 3 6
例2:
数组 m[]: 4 3 -8 7 8
数组 c[]: 4 7 -1 7 15
#include<bits/stdc++.h> using namespace std; int c[100]; //该数组存放子段和 int n; int fun(int m[100]) { c[0]=m[0]; int max=0; for(int i=1;i<n;i++) { if(c[i-1]>0) { c[i]=c[i-1]+m[i]; } else { c[i]=m[i]; } if(c[i]>max) //找出最大子段和 { max=c[i]; } } return max; } int main() { int m[100]; while(cin>>n) { for(int i=0;i<n;i++) { cin>>m[i]; } fun(m); cout<<fun(m)<<endl; } return 0; }
原文:https://www.cnblogs.com/zl222333zl/p/10746006.html