Kadane算法
介绍:用于在O(n)时间复杂度内求解最大子数组和问题的高效算法。
代码实现:
int Kadane(int n,int a[])
{
int curr_sum=a[0];
int max_sum=a[0];
for(i=1;i<n;i++)
{
curr_sum=max(a[i],curr_sum+a[i]);
max_sum=max(curr_sum,max_sum);
}
return max_sum;
}
for循环遍历,curr_sum代表着是从当前位置新开一个子数组,还是将curr_sum添加到上一个子数组,max_sum则代表最大子数组之和,算法本质是dp的状态转移。
题目见cf2107C
浙公网安备 33010602011771号