问题:
已知 一个整数序列a[n]:n个整数(有正负)
求 在这个序列的所有子序列(连续)中,最大的和是多少?
注意:
以下代码都要求最大和 【可为负数】,若要求最大和 【非负】,只需最后判断一下即可
1 算法1
#include<cstdio>
using namespace std;
// 整数序列a[n]
int max_subseq_sum1(int a[], int n){
int max_sum=a[0]; // 所有 子序列中的最大和
int this_sum; // 当前 子序列的和
int i,j,k;
for(i=0; i<n; i++){
// 以a[i]开头的所有子序列
for(int j=i; j<n; j++){
// 子序列: a[i] ~ a[j]
this_sum = 0;
for(k=i; k<=j; k++){
this_sum += a[k];
}
//
if(this_sum > max_sum){
max_sum = this_sum;
}
}
}
return max_sum;
}
int main(){
int a[5] = {
-1, 10, 4, -10, 3};
int max_sum;
max_sum = max_subseq_sum1(a