找出数组连续元素相加的最大和
#include<stdio.h> #include<math.h> int find_max_sum(int array[],int n) { int maxsofar=0;//当前最大值 int maxendinghere=0;//包含数组当前元素array[i]的最大值 for (int i=0;i<n;i++) { maxendinghere = max(maxendinghere+array[i],0); maxsofar = max(maxsofar,maxendinghere); } maxsofar = max(0,maxsofar);//数组元素全部小于零时,取最大数组和为0 return maxsofar; } int main() { int data[10] = {-1,-5,9,2,-4,-6,-9,5,-23,-1}; int max_sum = find_max_sum(data,10); for (int i=0;i<10;i++) { printf(" %d",data[i]); } printf("\nmax_sum:%d\n",max_sum); return 0; }