问题:最大子数组的累加和
参考代码
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int findByDp(int array[], int N);
int main()
{
int N = 10;
int array[N];
srand(time(NULL));
for(int i=0; i<N;i++){
array[i] = rand()%20 - 10;
}
for(int i=0; i<N;i++){
cout << array[i] << "\t";
if((i+1) % 10 == 0){
cout << endl;
}
}
cout << findByDp(array, N) << endl;
return 0;
}
int findByDp(int array[], int N){
int sumJ = array[0];
int max = sumJ;
int left, right;
for(int i = 1; i < N; i++){
if(sumJ >= 0){
sumJ += array[i];
} else {
sumJ = array[i];
left = i;
}
if(sumJ > max){
max = sumJ;
right = i;
}
}
cout << "max's left is: " << left << ";right is : " << right << endl;
return max;
}