Java 如何使用递归方法在ArrayList上保留不同的值?
我正在使用递归方法进行置换,我希望将置换保留在ArrayList中。如果一个置换等于另一个置换,我想删除这个bc,比如123等于132,124等于142。我想避免重复 排列如下:Java 如何使用递归方法在ArrayList上保留不同的值?,java,recursion,arraylist,Java,Recursion,Arraylist,我正在使用递归方法进行置换,我希望将置换保留在ArrayList中。如果一个置换等于另一个置换,我想删除这个bc,比如123等于132,124等于142。我想避免重复 排列如下: (1) : 1 2 3 (2) : 1 2 4 (3) : 1 3 2 (4) : 1 3 4 (5) : 1 4 2 (6) : 1 4 3 (7) : 2 1 3 (8) : 2 1 4 (9) : 2 3 1 (10) : 2 3 4 (11) : 2 4 1 (12) : 2 4 3 (1
(1) : 1 2 3
(2) : 1 2 4
(3) : 1 3 2
(4) : 1 3 4
(5) : 1 4 2
(6) : 1 4 3
(7) : 2 1 3
(8) : 2 1 4
(9) : 2 3 1
(10) : 2 3 4
(11) : 2 4 1
(12) : 2 4 3
(13) : 3 1 2
(14) : 3 1 4
(15) : 3 2 1
(16) : 3 2 4
(17) : 3 4 1
(18) : 3 4 2
(19) : 4 1 2
(20) : 4 1 3
(21) : 4 2 1
(22) : 4 2 3
(23) : 4 3 1
(24) : 4 3 2
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
但当我要求打印ArrayList时,列表如下:
(1) : 1 2 3
(2) : 1 2 4
(3) : 1 3 2
(4) : 1 3 4
(5) : 1 4 2
(6) : 1 4 3
(7) : 2 1 3
(8) : 2 1 4
(9) : 2 3 1
(10) : 2 3 4
(11) : 2 4 1
(12) : 2 4 3
(13) : 3 1 2
(14) : 3 1 4
(15) : 3 2 1
(16) : 3 2 4
(17) : 3 4 1
(18) : 3 4 2
(19) : 4 1 2
(20) : 4 1 3
(21) : 4 2 1
(22) : 4 2 3
(23) : 4 3 1
(24) : 4 3 2
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
432
代码如下:(方法“getCyclesThroughPermutation”在main内部调用)
private static int cont=0;
私有静态int[]置换;
公共静态void getCycleSthrough置换(字节[][]矩阵,int顶点){
allPermutations=新的ArrayList();
/*这将表示所有顶点*/
int-allVertices[]=新的int[顶点];
/*为顶点数组指定值*/
int值=0;
对于(int i=0;i<顶点;i++){
值++;
所有顶点[i]=值;
}
/*调用permute方法*/
应用程序排列(所有顶点);
}
public static ArrayList allPermutations=new ArrayList();
/**
*Main方法:接收其元素将被置换的数组。
*@param顶点
*/
公共静态无效置换(int[]顶点){
//i.长度
对于(int i=3;i<4;i++){
置换=新整数[i];
置换(顶点,0,所有置换);
}
for(int i=0;i
似乎是一个集合的用例,而不是一个列表,不是吗?所以输入的预期输出应该是[[1,2,3,4]
,[1,2,4],[1,3,4],[1,3,4],[2,3,4]?是的,输入是一个邻接矩阵,但数字是1,2,3和4,输出应该是我显示的第一个列表