【Java.算法】使用回溯实现的全排列算法

 【代码】

复制代码
import java.util.ArrayList;
import java.util.List;

public class Arrange {
    static List<List<Integer>> res = new ArrayList<>();
    
    public static void main(String[] args) {
        int[] arr = {1,2,3};
  
        Arrange h1 = new Arrange();
        h1.dfs(arr,new ArrayList<>());
        
        int idx=0;
        for (List<Integer> re : res) {
            System.out.println((++idx)+"."+re);
        }
  
    }
  
    public List<List<Integer>> dfs( int[] arr,List<Integer> list){
        List<Integer> temp = new ArrayList<>(list);
        if (arr.length == list.size()){
            res.add(temp);
        }
        for (int i=0;i<arr.length;i++){
            if (temp.contains(arr[i])){
                continue;
            }
            temp.add(arr[i]);
            dfs(arr,temp);
            temp.remove(temp.size()-1);
        }
        return res;
    }
}
复制代码

【两个元素的全排列效果】

1.[1, 2]
2.[2, 1]

【三个元素的全排列效果】

1.[1, 2, 3]
2.[1, 3, 2]
3.[2, 1, 3]
4.[2, 3, 1]
5.[3, 1, 2]
6.[3, 2, 1]

【四个元素的全排列效果】

复制代码
1.[1, 2, 3, 4]
2.[1, 2, 4, 3]
3.[1, 3, 2, 4]
4.[1, 3, 4, 2]
5.[1, 4, 2, 3]
6.[1, 4, 3, 2]
7.[2, 1, 3, 4]
8.[2, 1, 4, 3]
9.[2, 3, 1, 4]
10.[2, 3, 4, 1]
11.[2, 4, 1, 3]
12.[2, 4, 3, 1]
13.[3, 1, 2, 4]
14.[3, 1, 4, 2]
15.[3, 2, 1, 4]
16.[3, 2, 4, 1]
17.[3, 4, 1, 2]
18.[3, 4, 2, 1]
19.[4, 1, 2, 3]
20.[4, 1, 3, 2]
21.[4, 2, 1, 3]
22.[4, 2, 3, 1]
23.[4, 3, 1, 2]
24.[4, 3, 2, 1]
复制代码

【五个元素的全排列效果】

复制代码
1.[1, 2, 3, 4, 5]
2.[1, 2, 3, 5, 4]
3.[1, 2, 4, 3, 5]
4.[1, 2, 4, 5, 3]
5.[1, 2, 5, 3, 4]
6.[1, 2, 5, 4, 3]
7.[1, 3, 2, 4, 5]
8.[1, 3, 2, 5, 4]
9.[1, 3, 4, 2, 5]
10.[1, 3, 4, 5, 2]
11.[1, 3, 5, 2, 4]
12.[1, 3, 5, 4, 2]
13.[1, 4, 2, 3, 5]
14.[1, 4, 2, 5, 3]
15.[1, 4, 3, 2, 5]
16.[1, 4, 3, 5, 2]
17.[1, 4, 5, 2, 3]
18.[1, 4, 5, 3, 2]
19.[1, 5, 2, 3, 4]
20.[1, 5, 2, 4, 3]
21.[1, 5, 3, 2, 4]
22.[1, 5, 3, 4, 2]
23.[1, 5, 4, 2, 3]
24.[1, 5, 4, 3, 2]
25.[2, 1, 3, 4, 5]
26.[2, 1, 3, 5, 4]
27.[2, 1, 4, 3, 5]
28.[2, 1, 4, 5, 3]
29.[2, 1, 5, 3, 4]
30.[2, 1, 5, 4, 3]
31.[2, 3, 1, 4, 5]
32.[2, 3, 1, 5, 4]
33.[2, 3, 4, 1, 5]
34.[2, 3, 4, 5, 1]
35.[2, 3, 5, 1, 4]
36.[2, 3, 5, 4, 1]
37.[2, 4, 1, 3, 5]
38.[2, 4, 1, 5, 3]
39.[2, 4, 3, 1, 5]
40.[2, 4, 3, 5, 1]
41.[2, 4, 5, 1, 3]
42.[2, 4, 5, 3, 1]
43.[2, 5, 1, 3, 4]
44.[2, 5, 1, 4, 3]
45.[2, 5, 3, 1, 4]
46.[2, 5, 3, 4, 1]
47.[2, 5, 4, 1, 3]
48.[2, 5, 4, 3, 1]
49.[3, 1, 2, 4, 5]
50.[3, 1, 2, 5, 4]
51.[3, 1, 4, 2, 5]
52.[3, 1, 4, 5, 2]
53.[3, 1, 5, 2, 4]
54.[3, 1, 5, 4, 2]
55.[3, 2, 1, 4, 5]
56.[3, 2, 1, 5, 4]
57.[3, 2, 4, 1, 5]
58.[3, 2, 4, 5, 1]
59.[3, 2, 5, 1, 4]
60.[3, 2, 5, 4, 1]
61.[3, 4, 1, 2, 5]
62.[3, 4, 1, 5, 2]
63.[3, 4, 2, 1, 5]
64.[3, 4, 2, 5, 1]
65.[3, 4, 5, 1, 2]
66.[3, 4, 5, 2, 1]
67.[3, 5, 1, 2, 4]
68.[3, 5, 1, 4, 2]
69.[3, 5, 2, 1, 4]
70.[3, 5, 2, 4, 1]
71.[3, 5, 4, 1, 2]
72.[3, 5, 4, 2, 1]
73.[4, 1, 2, 3, 5]
74.[4, 1, 2, 5, 3]
75.[4, 1, 3, 2, 5]
76.[4, 1, 3, 5, 2]
77.[4, 1, 5, 2, 3]
78.[4, 1, 5, 3, 2]
79.[4, 2, 1, 3, 5]
80.[4, 2, 1, 5, 3]
81.[4, 2, 3, 1, 5]
82.[4, 2, 3, 5, 1]
83.[4, 2, 5, 1, 3]
84.[4, 2, 5, 3, 1]
85.[4, 3, 1, 2, 5]
86.[4, 3, 1, 5, 2]
87.[4, 3, 2, 1, 5]
88.[4, 3, 2, 5, 1]
89.[4, 3, 5, 1, 2]
90.[4, 3, 5, 2, 1]
91.[4, 5, 1, 2, 3]
92.[4, 5, 1, 3, 2]
93.[4, 5, 2, 1, 3]
94.[4, 5, 2, 3, 1]
95.[4, 5, 3, 1, 2]
96.[4, 5, 3, 2, 1]
97.[5, 1, 2, 3, 4]
98.[5, 1, 2, 4, 3]
99.[5, 1, 3, 2, 4]
100.[5, 1, 3, 4, 2]
101.[5, 1, 4, 2, 3]
102.[5, 1, 4, 3, 2]
103.[5, 2, 1, 3, 4]
104.[5, 2, 1, 4, 3]
105.[5, 2, 3, 1, 4]
106.[5, 2, 3, 4, 1]
107.[5, 2, 4, 1, 3]
108.[5, 2, 4, 3, 1]
109.[5, 3, 1, 2, 4]
110.[5, 3, 1, 4, 2]
111.[5, 3, 2, 1, 4]
112.[5, 3, 2, 4, 1]
113.[5, 3, 4, 1, 2]
114.[5, 3, 4, 2, 1]
115.[5, 4, 1, 2, 3]
116.[5, 4, 1, 3, 2]
117.[5, 4, 2, 1, 3]
118.[5, 4, 2, 3, 1]
119.[5, 4, 3, 1, 2]
120.[5, 4, 3, 2, 1]
复制代码

【参考资料】

https://www.jb51.net/article/252294.htm

posted @   逆火狂飙  阅读(192)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2020-01-21 [Oracle/SQL]找出id为0的科目考试成绩及格的学生名单的四种等效SQL语句
2017-01-21 为什么一个目录里放超过十个Mp4文件会导致资源管理器和播放程序变卡变慢?
2015-01-21 【高中数学/函数/幂函数】若a=(1/2)^2/3,b=(1/5)^2/3,c=(1/2)^1/3,则a,b,c的大小关系是?
2015-01-21 【Canvas与艺术】蓝色渐变单脚四钉正方形中写盈字
2014-01-21 【Canvas与艺术】双齿轮啮合传动
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示