当前位置: 首页 > 知识库问答 >
问题:

最大和子数组

应志用
2023-03-14

我试图在一个数组中找到具有最大和的邻接子数组。所以,对于数组

{5,15,-30,10,-5,40,10}

public static void main(String[] args) {
    int[] arr = {5, 15, -30, 10, -5, 40, 10};

    System.out.println(maxSubsequenceSum(arr));         
}

public static int maxSubsequenceSum(int[] X) {
    int max = X[0];
    int sum = X[0];

    for (int i = 1; i < X.length; i++) {
        sum = Math.max(X[i], sum + X[i]);
        max = Math.max(max, sum);
    }
    return max;
}

共有1个答案

阎宾实
2023-03-14

您需要求和所有可能的子数组。为此,您可以执行以下代码

public static int maxSubsequenceSum(int[] X) {
    int max = 0;
    boolean max_init = false;
    int max_from=0;
    int max_to=0; // this is not included
    for (int i = 0; i < X.length; i++) {
        for (int j = i + 1; j < X.length + 1; j++) {
            int total = 0;
            for (int k = i; k < j; k++) {
                total += X[k];
            }
            if (total > max || !max_init){
                max = total;
                max_init = true;
                max_from = i;
                max_to = j;
           }
        }
    }
    for (int i=max_from;i<max_to;i++)
       System.out.print(X[i]+",");
    System.out.println();
    return max;
}
 类似资料:
  • 很抱歉发了这么长的帖子,但我不明白我做错了什么。感谢您事先的帮助! 这里是当前面提到的列表作为输入给出时的输出,我已经经历并查看了每一个步骤,列表中的每一个消除在我看来都是合乎逻辑的,我不知道一个人怎么会以结束和105结束。如果有人能帮我理解,我会非常感激的!

  • 给出了一个由N个整数组成的数组。 数组的最大和是该数组的非空连续子数组的元素的最大和。 例如,数组[1,-2,3,-2,5]的最大和是6,因为子数组[3,-2,5]的和是6,并且不可能实现更大的子数组和。 现在,您只能从给定数组中删除一个以上的元素。这样做可以得到的结果数组的最大可能最大和是多少? 我正在用我自己的测试用例测试我的代码。我在Dev-C++上得到了正确的输出。但是当我在网上测试我的代

  • 给定一个整数数组,我必须找到具有最大和的子数组,使得和是奇数。 但是我怎么把它扩展到和是奇数。 编辑 数组的所有元素都是整数和正数

  • NowCoder 题目描述 {6, -3, -2, 7, -15, 1, 2, 2},连续子数组的最大和为 8(从第 0 个开始,到第 3 个为止)。 解题思路 // java public int FindGreatestSumOfSubArray(int[] nums) { if (nums == null || nums.length == 0) return 0;

  • 现在我用不同的测试场景测试它,总是比Kadena的结果更好。我不相信这样的运气,但找不到我错过了什么。你能看看这是否是一个有效的解决方案吗? 更新代码的思想是只跟踪一个子数组,并添加到其尾数,当数字很低时,和成为尾数组后的负集开始。另外,一开始的负面项目被忽略了。子数组的头只是向前移动。每次sum看起来是maximal-maxsum并且限制被更新。

  • 我想从数组的一部分找到最大值和最小值。我知道我可以通过复制数组将所需的数组部分复制到另一个数组中,但只是想知道是否可以不复制数组,因为我必须为不同的子数组进行循环 例如: 现在我想从1到4找到子数组的最小/最大值(如果可能,不复制子数组)