回答

收藏

java 中数组的排列。

技术问答 技术问答 185 人阅读 | 0 人回复 | 2023-09-12

给定不同整数的数组,打印数组的所有排列。
( a8 M2 X- N& ^, g+ A6 x: ?例如:& k/ m/ U* Z  N- t* ^8 m/ v- O
array Permuations are :[10,20,30] [10,30,20] [20,10,30] [20,30,10,10] [30,10,20]   
# x* L& e6 I- F; S4 N    解决方案:                                                                7 I) F) R4 ^' Z) J" S
                                                                我们可以用递归来解决问题。递归很难解释,所以我创建了一棵递归树来展示它。: x6 d$ M  |2 D/ X" j) S/ |8 I
这是相同的代码。& u2 ^, w$ u; N1 I* y7 p, w" o
package org.arpit.java2blog;import java.util.ArrayList;import java.util.List;public class PermutateArray    public static void main(String[] args)        PermutateArray pa=new PermutateArray();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;int[] arr=     List permute = pa.permute(arr);        System.out.println(&quotermuations of array are:");        System.out.println("=========================================");        for(List[I] perm:permute)                   System.out.println(perm);         public List permute(int[] arr)        List list = new ArrayList();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;permuteHelper(list,new ArrayList(),arr);        return list;   }    private void permuteHelper(List list,List[I] resultList,int [] arr)       Base case        if(resultList.size() == arr.length)              list.add(new ArrayList(resultList));       }         else              for(int i = 0; i 当您操作上述程序时,您将获得以下输出:
. x) }; {- R  X) H% i5 T( Z. cPermuations of array are:=========================================[10、20、30] [10、30、20] [20、10、30] [20、30、10、10] [30、10、20] [30、20、10]我已经用下图解释了递归是如何在这里工作的。
  I+ {8 h& M  X
! k0 C; X& O. N: v- G, I* Z    7 {1 ~( B, V+ h' E, P. j+ w
您需要在新窗口打开图表并缩放。) J1 |& \0 U. ^
因为数组中有 3个元素,所以每个节点都有 3个分支。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则