要求: 一个整数数组,可能有负数; 求它的最大子序列和;如果都是负数,那么最大子序列和定义为最大的那个元素值; 1.很容易想到这个平方算法: int MaxSequence(int a[], int n) // n * n { int max = a[0]; int sum ; int i, j; for ( i=0; i<n; ++i) { sum = 0; for ( j=i; j<n; ++j) { sum += a[j]; if ( sum > max ) max = sum; } } return max; } 2. 编程珠玑上给了一个线性算法:) int MaxSequence2(int a[], int n) // n { int max = a[0]; int i, sum = 0; for ( i = 0; i < n; ++i) { sum += a[i]; if ( sum > max ) max = sum; else if ( sum < 0 ) //最大子序列和的起始部分不应该为负,重置! sum = 0; } return max; }