Печать всех возможных поддиапазонов из массива define

#java

#Ява

Вопрос:

Я пытаюсь распечатать все возможные поддиапазоны из списка define. Для этого я использую приведенный ниже код

 static void printSubArray(int arr[]) {  int n = arr.length;   for (int i = 0; i lt; n; i  ) {  for (int j = i; j lt; n; j  ) {  for (int k = i; k lt;= j; k  ) {  System.out.print(arr[k]   " ");  }   System.out.println();  }  }  }  

Попробовал приведенный выше код, некоторые расширяют его работу, но не печатают весь возможный массив. Например, пожалуйста, найдите ниже пример:

Ввод:: int a[] = { 1, 2, 3 };

Выход::

 1  1 2  1 2 3  2  2 3  3   

Как мы видим на выходных данных, в некоторых подмассивах отсутствует 1, 3.

Может ли кто-нибудь, пожалуйста, помочь в этом

Ответ №1:

Таким образом, текущий номер должен быть напечатан в его строке, затем он исключается, и печатаются все следующие номера, при этом текущий номер передается в качестве префикса для включения в дальнейшие печати.

Количество наборов равно 2 n — 1, где n -длина входного массива.

Таким образом, может быть разработано следующее рекурсивное решение:

 static void printSubArray(int ... arr) {  printSubArray("", -1, arr); }  static void printSubArray(String prefix, int ix, int ... arr) {  for (int i = ix   1; i lt; arr.length; i  ) {  System.out.println(prefix   arr[i]);  printSubArray(prefix   arr[i]   " ", i, arr);  } }  

Для ввода printSubArray(1, 2, 3) он печатает:

 1 1 2 1 2 3 1 3 2 2 3 3  

Для ввода printSubArray(1, 2, 3, 4) он печатает:

 1 1 2 1 2 3 1 2 3 4 1 2 4 1 3 1 3 4 1 4 2 2 3 2 3 4 2 4 3 3 4 4