import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型二维数组 */ public static LinkedList<LinkedList<Integer>> lists = new LinkedList<>(); public int[][] cow_permute (int[] nums) { // write code here Boolean[] flags = new Boolean[nums.length]; Arrays.fill(flags,false); search(nums,flags,new LinkedList<>()); int[][] arr = new int[lists.size()][nums.length]; for(int i=lists.size()-1;i>=0;i--){ for(int j=0;j<nums.length;j++){ arr[lists.size()-1-i][j] = lists.get(i).get(j); } } return arr; } public void search(int[] nums,Boolean[] flags,LinkedList<Integer> arrayList){ if(arrayList.size()==nums.length){ lists.add(new LinkedList<>(arrayList)); } for(int i=0;i<flags.length;i++){ if(!flags[i]){ arrayList.add(nums[i]); flags[i]=true; search(nums,flags,arrayList); arrayList.remove(arrayList.size()-1); flags[i] = false; } } } }
本题考察的知识点就是N叉树的应用,所用编程语言是java.本题主要是N叉树的建立,不存在剪枝的情况,所以我们只要考虑建立N叉树就行。