回溯算法全排列

"全排列"是数学中的一个概念,指的是从给定集合中取出所有元素的所有排列方式。在这个问题中,我们需要实现一个方法,该方法能够生成数字1、2和3的所有全排列。

以下是一个简单的Java实现:

    import java.util.*;  

    public class Main {  

        public static void main(String[] args) {  

            int[] nums = {1, 2, 3};  

            List> permute = permute(nums);  

            for (List integers : permute) {  

                System.out.println(integers);  

            }  

        }  

      

        public static List> permute(int[] nums) {  

            List> output = new ArrayList<>();  

            ArrayList nums_list = new ArrayList();  

            for (int num : nums) {  

                nums_list.add(num);  

            }  

            int n = nums.length;  

            backtrack(n, nums_list, output, 0);  

            return output;  

        }  

      

        public static void backtrack(int n, ArrayList nums, List> output, int first) {  

            if (first == n) {  

                output.add(new ArrayList(nums));  

            }  

            for (int i = first; i < n; i++) {  

                Collections.swap(nums, first, i);  

                backtrack(n, nums, output, first + 1);  

                Collections.swap(nums, first, i);  

            }  

        }  

    }

这个程序首先创建一个包含1、2和3的数组,然后通过permute方法计算全排列。permute方法使用回溯算法来生成所有可能的排列,每次递归地交换数组中的两个元素,直到所有的元素都被交换过。最后,将生成的排列添加到结果列表中。

你可能感兴趣的:(前端java算法)