C++ 最大子阵kadane算法 void kadane(int A[],int N,int&bestStart,int&bestEnd,int&bestSum) { int max_end_此处=0; int max_so_far=0; 最佳开始=0; 对于(int i=0;i当前最大值) { max_so_far=max_ending_在此; bestEnd=i; } } }
我想更新最佳开始索引 如果我有一个数组A={-1,-2,5,0,1} 最佳开始应该是索引2和最佳结束索引4我得到了最佳结束,但我不知道如何更新最佳开始C++ 最大子阵kadane算法 void kadane(int A[],int N,int&bestStart,int&bestEnd,int&bestSum) { int max_end_此处=0; int max_so_far=0; 最佳开始=0; 对于(int i=0;i当前最大值) { max_so_far=max_ending_在此; bestEnd=i; } } },c++,algorithm,kadanes-algorithm,C++,Algorithm,Kadanes Algorithm,我想更新最佳开始索引 如果我有一个数组A={-1,-2,5,0,1} 最佳开始应该是索引2和最佳结束索引4我得到了最佳结束,但我不知道如何更新最佳开始 这里的最大子数组是=6(5+0+1)保持潜在的最佳开始索引 void kadane(int A[], int N, int& bestStart, int& bestEnd, int& bestSum) { int max_ending_here = 0; int max_so_far = 0;
这里的最大子数组是=6(5+0+1)保持潜在的最佳开始索引
void kadane(int A[], int N, int& bestStart, int& bestEnd, int& bestSum)
{
int max_ending_here = 0;
int max_so_far = 0;
bestStart = 0;
for (int i = 0; i < N; i++)
{
max_ending_here += A[i];
if (max_ending_here < 0)
{
max_ending_here = 0;
}
if (max_ending_here > max_so_far)
{
max_so_far = max_ending_here;
bestEnd = i;
}
}
}
bestStartCandidate=0;
if(此处的最大值小于0)
{
此处的最大值=0;
bestStartCandidate=i+1;
}
如果(此处最大值>当前最大值)
{
max_so_far=max_ending_在此;
最佳开始=最佳开始条件;
bestEnd=i;
}
保持潜在最佳启动指数
void kadane(int A[], int N, int& bestStart, int& bestEnd, int& bestSum)
{
int max_ending_here = 0;
int max_so_far = 0;
bestStart = 0;
for (int i = 0; i < N; i++)
{
max_ending_here += A[i];
if (max_ending_here < 0)
{
max_ending_here = 0;
}
if (max_ending_here > max_so_far)
{
max_so_far = max_ending_here;
bestEnd = i;
}
}
}
bestStartCandidate=0;
if(此处的最大值小于0)
{
此处的最大值=0;
bestStartCandidate=i+1;
}
如果(此处最大值>当前最大值)
{
max_so_far=max_ending_在此;
最佳开始=最佳开始条件;
bestEnd=i;
}
不正确事实上,在得到正确答案之前,我添加了很多if条件。谢谢帮助。不正确事实上,在得到正确答案之前,我添加了很多if条件。谢谢帮助