#include <iostream>
using namespace std;
int findByDp(int *arr,int len) //用递推写
{
int sumj = arr[0];
int max = sumj;
int left=0, right=0;
for(int j=1; j<len; j++)
{
if(sumj>=0) //左子表的最大和为正,继续向后累加
{
sumj += arr[j];
}
else
{
sumj = arr[j];
left = j; //丢弃前部分和的同时,更新left
}
if(sumj > max)
{
max = sumj;
cout << "---" << max << "---" << endl;
right = j;
}
}
return max;
}
int main()
{
int a[7]={1,-2,3,5,-2,6,-1} ;
int maxnum = findByDp(a,7);
cout << maxnum << endl;
return 0;
}
返回子数组最大累加和——算法笔记
最新推荐文章于 2020-09-16 17:08:09 发布