可视化回溯和编码问题SplitArray

时间:2019-11-20 16:32:19

标签: java tree backtracking recursive-backtracking

我目前已经完成了encodingbat,递归2中的splitArray问题。但是,查看我的代码时,我遇到了可视化代码的问题。我的代码如下:

public boolean splitArray(int[] nums) {

  if (nums == null) {
          return false;
      }

   return splitArray(nums, 0, 0, 0);

}

public boolean splitArray(int[] nums, int index, int sum1, int sum2) {

    if(index >= nums.length){
        return sum1 == sum2;
    }
    boolean sum1Split = splitArray(nums, index + 1, sum1 + nums[index], sum2);
    boolean sum2Split = splitArray(nums, index + 1, sum1, sum2 + nums[index]);

    if (sum1Split || sum2Split) {
        return true;
    }

    return false;

}

提示是:

给定一个整数数组,可以将整数分为两组,以便两组的总和相同。每个int必须在一个组中或在另一个组中。编写一个递归帮助器方法,该方法将使用您喜欢的任何参数,然后从splitArray()对递归帮助器进行初始调用。 (无需循环。)

让我们说我们有一个[5, 2, 3](真)和[5, 2, 2,](假)的数组。使用回溯,我们创建了一个数组值树。我知道如何为sum1创建树,但是,我不知道程序在哪里比较sum2,或者为什么我们的[5, 2, 3]数组为true而[5, 2, 2]为false。

任何帮助,想法或资源将不胜感激。

0 个答案:

没有答案