如何找到数组的所有连续子数组组合并打印它

How to find all contiguous sub array combinations of an array and print it

我需要编写一个程序以特定格式打印数组的所有子数组。

Example-
I/o: 
n = 3
A = (1,2,3) where n is the size of the array and A is the array itself.

O/p:
(1),(2),(3)
(1),(2,3)
(1,2),(3)
(1,2,3)

我能够使用两个循环获取所有子数组,但无法在这个特定的 order.I 编码中生成输出 Java。 我的代码如下:- a[]→n个元素的整数数组

for(int i=0;i<a.length;i++){
  String s = "";
  for(int j=i;j<a.length;j++){
    s = s + a[j] + " ";
  System.out.println(s);
}

这段代码给出了所有可能的子数组,但不是所有可以从一个数组形成的传染性子数组组合。

如果没有递归,这有点困难。甚至递归对于这个方法来说也很难,因为你必须在递归方法内部循环,这很不寻常。

class Main {
  static void printGroups(int[] a, int start, String output) {
    output += "(" + a[start];
    for (int i = start + 1; i < a.length; i++) {
      printGroups(a, i, output + "),");
      output += "," + a[i];
    }
    System.out.println(output + ")");
  }

  public static void main(String[] args) {
    printGroups(new int[]{1, 2, 3, 4}, 0, "");
  }
}

这输出:

(1),(2),(3),(4)
(1),(2),(3,4)
(1),(2,3),(4)
(1),(2,3,4)
(1,2),(3),(4)
(1,2),(3,4)
(1,2,3),(4)
(1,2,3,4)

解法符合题目要求,但我想警告这些不都是子集组合.

缺少的组合是:

(4,2),(3,1)
(4,1),(2,3)
(2),(1,3,4)
(3),(1,2,4)
(2),{4),(1,3)
(1),(3),(2,4)
(2),(3),(1,4)