最大子序列和问题
给定A1,A2,A3,…An(可能有负数),求最大的子序列和
例如:输入-2,11,-4,13,-5,-2时,答案为20(11±4+13)。
第一种:(穷举法)
#include<iostream>
//时间复杂度为O(N*N*N)
int Maxsum(const int A[], int n){
//三重循环列举所有可能序列,找出最大的
int thissum, maxsum, i, j, k;
maxsum = 0;
for (i = 0; i < n; i++){
for (j = i; j < n; j++){
thissum = 0;
for (k = i; k < n; k++){
thissum += A[k];
if (thissum>maxsum){
maxsum = thissum;
}
}
}
}
return maxsum;
}
int main()
{
using namespace std;
int len = 0;
cout << "Enter len" << endl;
cin >> len;
int *a = new int[len];//创建
int i = 0;
cout << "输入序列" << endl;
for (i = 0; i < len; i++){
cin >> a[i];
}
int sum = Maxsum(a,</