int max_value(int array[],int size,int &begin,int &end) { int maxvalue=0;//用于保存当前数组的最大值 int array_temp=0;//用于保存数组当前的值 int temp_begin,temp_end; for (int array_index=0;array_index<size;array_index++) { /*如果当前的array_temp大于0,则再加上数组的下一个值,如果加上下一个 值有变得更大就将最大值设置为array_temp的当前值,如果没有更大, 如果array_temp的值还是正的,就继续加上下一个*/ if (array_temp>0) { array_temp+=array[array_index]; temp_end=array_index; } /*如果当前的array_temp小于或者等于0,则将array_temp的当前值设置为下一个 数组的值,一直到array_temp的当前值大于0为止*/ else { array_temp=array[array_index]; temp_end=temp_begin=array_index; } /*如果array_temp的当前值比原来已经保存的最大值还要大,就将当前的array_temp 的值替换为最大值*/ if (array_temp>maxvalue) { maxvalue=array_temp; begin=temp_begin; end=temp_end; } } return maxvalue; } int main() { int array_max; cin>>array_max; int *array=new int[array_max]; for (int array_index=0;array_index<array_max;array_index++) { cin>>array[array_index]; } int array_begin,array_end; cout<<"max value is :"<<max_value(array,array_max,array_begin,array_end)<<endl; for (int array_index=array_begin;array_index<=array_end;array_index++) { cout<<array[array_index]<<" "; } return 0; }