- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
int array[] = {-1, 4, -2, 5, -5, 2, -20, 6};
如果我有那个数组,我的 Kadane 算法实现可以找到最大子数组:
int max_so_far = INT_MIN;
int max_ending_here = 0;
for (int i = 0; i < size; i++) {
max_ending_here = max(max_ending_here + array[i], 0);
max_so_far = max(max_ending_here, max_so_far);
}
printf("%d\n", max_so_far);
但是,如果我有一个包含所有底片的数组:
int array[]= {-10, -10, -10};
它不会工作,它应该返回 -10,但我得到 0。
如何让它也适用于负数?
谢谢!
最佳答案
当所有元素都为负数时,最大子数组为空子数组,其和为0。
但如果您想更改算法以存储这种情况下的最大元素,您可以执行以下操作:
int max_so_far = INT_MIN;
int max_ending_here = 0;
int max_element = INT_MIN;
for (int i = 0; i < size; i++)
{
max_ending_here = max(max_ending_here + array[i], 0);
max_so_far = max(max_ending_here, max_so_far);
max_element = max(max_element, array[i]);
}
if (max_so_far == 0)
max_so_far = max_element;
printf("%d\n", max_so_far);
关于c++ - Kadane 算法负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9942228/
我已经编写了 Kadane 算法,但不知何故它返回了错误的结果。不知道为什么。这是实现。基本上是在数组中找到“和最大的 ubarray” public class Kadane { publi
我将 Kadane 的算法修改为以下内容,这样即使在数组中包含所有负数的情况下它也能正常工作。 //Largest Sum Contiguous Subarray #include #include
尝试使用此处解释的 Kadane 算法:https://www.youtube.com/watch?v=OexQs_cYgAQ&t=721s 在这个数字数组中:[-5, 10, 2, -3, 5, 8
这个算法很有趣,我知道它被用于图像处理(可能还有其他场景),但我觉得奇怪的是这个算法也对负值进行操作,而负值在成像世界中几乎不存在其中有很多 unsigned int 来表示值。 您能否提供一个利用
假设 max_sequence(Array A):是 Kadane 算法的一个解。 你有一个数组:5,-3,-4,8,-1,12,-6,+4,+4,-14,+2,+8 然后将此数组缩短为正负序列的条纹
我正在研究 Kadane 的最大子数组问题算法。现在我从声明中了解到我们已经找到一个 子数组 的算法。子数组是否包含整个数组本身。 其实我在尝试下面的程序 int main(void)
算法说明:最大子数组问题给定一个由 n 个实数组成的序列 A(1) … A(n),确定一个连续的子序列 A(i) … A(j),其中子序列中的元素之和最大。 算法: int kadane(int a[
Initialize: max_so_far = 0 max_ending_here = 0 Loop for each element of the array (a) max
int array[] = {-1, 4, -2, 5, -5, 2, -20, 6}; 如果我有那个数组,我的 Kadane 算法实现可以找到最大子数组: int max_so_far = IN
有人可以告诉我 Kadane 算法中发生了什么吗?想检查我的理解。这就是我的看法。 你正在遍历数组,每次将 ans 变量设置为看到的最大值,直到该值变为负数,然后 ans 变为零。 与此同时,每次循环
这个问题在这里已经有了答案: Maximum sum sublist? (13 个答案) 关闭 8 年前。 我有以下 Kadane's algorithm 的实现求解数组的最大子数组问题: publ
我的算法如下所示: Initialize: max_so_far = 0 max_ending_here = 0 Loop for each element of the array
#include #include int MIN = std::numeric_limits::min() using namespace std ; void findMaxSubArray(
应用 Kadane 算法来获得最大乘积子数组似乎很棘手。虽然我能够获得最大乘积,但我并没有真正获得最大乘积子数组的正确范围。 http://www.geeksforgeeks.org/maximum-
我正在尝试解决 hackerrank 问题 - 最大子数组模 - 此处描述 https://www.hackerrank.com/challenges/maximum-subarray-sum/pro
这是 Kadane 算法的 Java 实现,用于查找具有最大和的连续子数组的和。 static int maxSum(int[] arr) { int maxEndingHer
我查找了寻找连续子数组最大和的最优解。还有一种算法叫做 Kadane 算法。这是我在 geeksforgeeks 上找到的伪代码。 Initialize: max_so_far = 0
我一直在尝试获取子数组的最大积的范围(为求职面试而学习)。 这已经在这里问过(但没有提供有效的答案)。 Getting range of max product subarray using Kada
public class Kadane { double maxSubarray(double[] a) { double max_so_far = 0; double max_e
我感觉Kadane的算法是最大子数组问题真动态规划解法的修改版。为什么我这么感觉?我感觉是因为计算最大子数组的方式可以采取: for(i=0;i using namespace std; int DP
我是一名优秀的程序员,十分优秀!