【问题标题】:Finding the possible combinations of a two dimensional array查找二维数组的可能组合
【发布时间】:2023-03-20 04:46:01
【问题描述】:

我在使用 Java 时遇到了以下问题。我将在这篇文章的底部包含我的代码。我得到了大多数组合,但是我想不出一种方法让我的列变量在其余的递归调用中为 0,这将有助于我获得所有组合。该解决方案必须适用于所有大小的二维数组。最好我希望解决方案完全递归 - 没有循环。感谢您提供的任何见解。

给定二维数组的定义如下:

String[][] data = {
 {"A", "B"},
 {"1", "2"},
 {"XX","YY","ZZ"}
};

编写一个递归程序,按顺序输出每个子数组的所有组合。在前面的示例中,所需的输出可能如下所示:

A 1 XX
A 1 YY
A 1 ZZ
A 2 XX
A 2 YY
A 2 ZZ
B 1 XX
B 1 YY
B 1 ZZ
B 2 XX
B 2 YY
B 2 ZZ

您的程序应该在任一维度上处理任意大小的数组。例如,考虑以下输入数组:

String[][] data = {
 {"A"},
 {"1"},
 {"2"},
 {"XX","YY"}
};

应该输出:

A 1 2 YY
A 1 2 YY

到目前为止我的解决方案:

private String[][] data = {
        {"A", "B"},
        {"1", "2"},
        {"XX","YY","ZZ"}
};

public void combinations() {
    helperMethod("",0, 0);
}

private void helperMethod(String oldCombination, int row, int col) {
    String newCombination = oldCombination + data[row][col];

    if (row == data.length - 1) {
        System.out.println(newCombination);
    }

    if (row < data.length - 1) {
        helperMethod(newCombination, row + 1, col);
    }

    if (col < data[row].length - 1) {
        helperMethod(oldCombination, row, col + 1);
    }
}

【问题讨论】:

    标签: java arrays recursion


    【解决方案1】:

    当您移动到下一行时,您必须将该列重置为零:

    if (row < data.length - 1) {
        helperMethod(newCombination, row + 1, 0); // 0 instead of col
    }
    

    有了这么小的改动,至少在您提供的测试用例中它似乎可以正常工作。

    【讨论】:

      猜你喜欢
      • 2013-03-29
      • 2019-04-18
      • 2012-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多