2015-05-26 3 views
2

Недавно я реализовал алгоритм Куба, чтобы сгенерировать все перестановки в списке чисел. Однако во всех примерах, которые я видел до сих пор, массив печатается в базовом случае и не возвращается. Я хочу сохранить все элементы, возвращаемые этим методом (heapsAlgorithm), в список (т. Е. List). Как мне это сделать?Получить элементы из рекурсивного алгоритма

public void heapsAlgorithm(int size, int[] array) { 
    if (size == 1){ 
     System.out.println(Arrays.toString(array)); // here I want to add this array to a list 
    } else { 
     for (int i = 0; i < array.length; i++) { 
      heapsAlgorithm(size - 1, array); 
      if(size%2==0){ 
       swap(array[i], array[size-1]); 
      } else { 
       swap(array[0], array[size-1]); 
      } 
     } 
    } 
} 

ответ

2

Проходят List и добавить копию массива, что, где теперь распечатать его.

public void heapsAlgorithm(int size, int[] array, List<int[]> result) { 
    if (size == 1){ 
     result.add(array.clone()); 
     //System.out.println(Arrays.toString(array)); // here I want to add this array to a list 
    } else { 
     for (int i = 0; i < array.length; i++) { 
      heapsAlgorithm(size - 1, array, result); 
      if(size%2==0){ 
       swap(array[i], array[size-1]); 
      } else { 
       swap(array[0], array[size-1]); 
      } 
     } 
    } 
} 
+0

Приветствия! Я сделал что-то подобное, но без .clone(), когда я добавил в список. – Andrei