고유한 정수 배열이 주어지고 가능한 모든 순열을 생성하라는 요청을 받았습니다. 두 순열은 요소 순서가 다른 경우 서로 다른 것으로 간주됩니다. 길이가 n인 배열의 경우 n!개의 가능한 순열이 있습니다.
해결책에는 두 가지 주요 단계가 포함됩니다.
사용 이 접근 방식을 사용하면 모든 순열을 생성할 수 있습니다.
import java.util.ArrayList; import java.util.List; public class Permutation { public static List<List<Integer>> permute(int[] nums) { List<List<Integer>> result = new ArrayList<>(); permute(nums, 0, result); return result; } private static void permute(int[] nums, int startIndex, List<List<Integer>> result) { if (startIndex == nums.length - 1) { // Base case: If we reach the end of the array, add the current permutation to the result. List<Integer> permutation = new ArrayList<>(); for (int num : nums) { permutation.add(num); } result.add(permutation); } else { // Recursive case: Permute the remaining elements for each element at the current index. for (int i = startIndex; i < nums.length; i++) { swap(nums, startIndex, i); permute(nums, startIndex + 1, result); swap(nums, startIndex, i); } } } private static void swap(int[] nums, int i, int j) { int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } }
int[] nums = {3, 4, 6, 2, 1}; List<List<Integer>> permutations = Permutation.permute(nums); for (List<Integer> permutation : permutations) { System.out.println(permutation); }
출력:
[3, 4, 6, 2, 1] [3, 4, 6, 1, 2] [3, 4, 2, 6, 1] [3, 4, 2, 1, 6] [3, 4, 1, 6, 2] [3, 4, 1, 2, 6] [3, 2, 6, 4, 1] [3, 2, 6, 1, 4] [3, 2, 4, 6, 1] [3, 2, 4, 1, 6] [3, 2, 1, 6, 4] [3, 2, 1, 4, 6] [3, 6, 4, 2, 1] [3, 6, 4, 1, 2] [3, 6, 2, 4, 1] [3, 6, 2, 1, 4] [3, 6, 1, 4, 2] [3, 6, 1, 2, 4] [6, 3, 4, 2, 1] [6, 3, 4, 1, 2] [6, 3, 2, 4, 1] [6, 3, 2, 1, 4] [6, 3, 1, 4, 2] [6, 3, 1, 2, 4] [6, 4, 3, 2, 1] [6, 4, 3, 1, 2] [6, 4, 2, 3, 1] [6, 4, 2, 1, 3] [6, 4, 1, 3, 2] [6, 4, 1, 2, 3] [2, 3, 6, 4, 1] [2, 3, 6, 1, 4] [2, 3, 4, 6, 1] [2, 3, 4, 1, 6] [2, 3, 1, 6, 4] [2, 3, 1, 4, 6] [2, 6, 3, 4, 1] [2, 6, 3, 1, 4] [2, 6, 4, 3, 1] [2, 6, 4, 1, 3] [2, 6, 1, 3, 4] [2, 6, 1, 4, 3] [4, 3, 6, 2, 1] [4, 3, 6, 1, 2] [4, 3, 2, 6, 1] [4, 3, 2, 1, 6] [4, 3, 1, 6, 2] [4, 3, 1, 2, 6] [4, 6, 3, 2, 1] [4, 6, 3, 1, 2] [4, 6, 2, 3, 1] [4, 6, 2, 1, 3] [4, 6, 1, 3, 2] [4, 6, 1, 2, 3] [1, 3, 6, 4, 2] [1, 3, 6, 1, 4] [1, 3, 4, 6, 1] [1, 3, 4, 1, 6] [1, 3, 1, 6, 4] [1, 3, 1, 4, 6] [1, 6, 3, 4, 2] [1, 6, 3, 1, 4] [1, 6, 4, 3, 1] [1, 6, 4, 1, 3] [1, 6, 1, 3, 4] [1, 6, 1, 4, 3] [2, 4, 3, 6, 1] [2, 4, 3, 1, 6] [2, 4, 6, 3, 1] [2, 4, 6, 1, 3] [2, 4, 1, 6, 3] [2, 4, 1, 3, 6] [2, 1, 4, 3, 6] [2, 1, 4, 1, 6] [2, 1, 6, 4, 3] [2, 1, 6, 1, 4] [2, 1, 3, 4, 6] [2, 1, 3, 1, 6] [6, 2, 4, 3, 1] [6, 2, 4, 1, 3] [6, 2, 1, 4, 3] [6, 2, 1, 3, 4] [6, 4, 2, 3, 1] [6, 4, 2, 1, 3] [6, 1, 2, 4, 3] [6, 1, 2, 1, 4] [6, 1, 4, 2, 3] [6, 1, 4, 1, 3] [6, 1, 3, 1, 4] [6, 1, 3, 4, 1] [4, 2, 6, 3, 1] [4, 2, 6, 1, 3] [4, 2, 1, 6, 3] [4, 2, 1, 3, 6] [4, 6, 2, 3, 1]
위 내용은 재귀적 접근 방식을 사용하여 고유한 정수 배열의 가능한 모든 순열을 생성하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!