
基于递归的全排列
发布日期:2021-05-10 03:17:57
浏览次数:9
分类:精选文章
本文共 401 字,大约阅读时间需要 1 分钟。
基于一组数1, 2, 3, …, n,我们可以生成它们的全排列。这种方法本质上是递归的,具体步骤如下:
当处理到第一个数1时,全排列只有一种可能,即1。
当处理到第二个数2时,可以选择将其插入到1之前或之后。这样,2的全排列有两种情况:12和21。
随后,当处理到第三个数3时,我们需要在现有的排列基础上逐一插入,并根据插入的空隙数量生成新的排列。例如,已经生成的排列12,有3个空隙可以插入3,分别生成312、132、123;而同理,排列21也会生成321、231、213。因此,第三个数3对应6种全排列。
这种递归的方式可以一直应用下去。只要在处理第k个数时,将其插入前k个空隙中的任意一个位置,然后递归处理剩下的k+1个位置,就可以逐一生成所有可能的排列。
通过上述方法,我们可以找出任何给定n的全排列集合。例如,对于n=4,通过这种方法可以得到24种排列结果,分别是1, 2, 3, 4的组合。
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月11日 00时08分22秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
03 . Go框架之Gin框架从入门到熟悉(Cookie和Session,数据库操作)
2019-03-06
Python学习笔记-StatsModels 统计回归(3)模型数据的准备
2019-03-06
Velocity.js初步
2019-03-06
Ubuntu16.04中php如何切换版本
2019-03-06
nginx上配置phpmyadmin
2019-03-06
HustOJ二次开发之修改数据库连接池
2019-03-06
SpringBoot之整合Dubbo
2019-03-06
Drools之关键字及错误信息
2019-03-06
h5做的app和原生app的区别
2019-03-06
嘿!为你的应用创建滚动日志吧?
2019-03-06
一个JAVA应用启动缓慢问题排查 --来自jdk securerandom 的问候
2019-03-06
语法解析器续:case..when表达式计算
2019-03-06
报警系统:php输出头信息以方便脚本抓取信息[排查篇]
2019-03-06
spring-boot-2.0.3之redis缓存实现,不是你想的那样哦!
2019-03-06
关于面试总结2-SQL学生表
2019-03-06
python笔记43-加解密AES/CBC/pkcs7padding
2019-03-06
httprunner学习23-加解密
2019-03-06
jenkins学习6-进docker容器修改jenkins时间
2019-03-06