#include<iostream.h> int main () { int b[10]={-10,-22,-45,-85,-44,-76,-58,-9,-10,-23}; int i,max=b[0],sum=0; for(i=0;i<10;i++) { if(sum<=0) { sum=b[i]; } else { sum=sum+b[i]; } if(sum>max) { max=sum; } } cout<<"最大的子数组之和为:"<<max<<endl; return 0; }
//
max赋值为数组第一个元素
sum初始为0
sum然后依次累加,累加一次,就与max比较一次,
如果sum累加值小于0,则不继续累加,当前元素则赋值给sum,sum则继续。。。
直到循环结束。
则,max为最大的子数组之和
成员:信1205 李志岩
信1205 张新宇
信1205 杨康