Я работаю над задачей, в которой я должен показать возможные перестановки длины массива.Я попробовал несколько хитростей, но он по-прежнему дает список многих выходных данных, и в итоге мой проект потерпел крах.
Я попытался математически и получил ответ "39916800.
Например: для входного массива [3,2,1,4,6], всего 5! = 120 возможных.
Вопрос:
Учитывая, что int [] a = [3, 10, 4, 6, 1, 8, 5, 9, 0, 11, 7, 2].Как часто вам приходится переставлять a с собой, пока вы не получите снова (это так называемая степень a)?
Пример: степень [0,2,1] равна 2, потому что permute([0,2,1], [0,2,1]) = [0,1,2] и перестановка ([0,1, 2], [0,2,1]) = [0,2,1].
Ответ должен состоять из 8 цифр.
Вот мой код:
public class Permute{
static void permute(java.util.List<Integer> arr, int k){
for(int i = k; i < arr.size(); i++){
java.util.Collections.swap(arr, i, k);
permute(arr, k+1);
java.util.Collections.swap(arr, k, i);
}
if (k == arr.size() -1){
System.out.println(java.util.Arrays.toString(arr.toArray()));
}
}
public static void main(String[] args){
Permute.permute(java.util.Arrays.asList(3,4,6,2,1), 0);
}
}