python 回溯法 子集树模板 系列 —— 11、全排列

简介: 问题实现 'a', 'b', 'c', 'd' 四个元素的全排列。分析这个问题可以直接套用排列树模板。不过本文使用子集树模板。分析如下:一个解x就是n个元素的一种排列,显然,解x的长度是固定的,n。

问题

实现 'a', 'b', 'c', 'd' 四个元素的全排列。

分析

这个问题可以直接套用排列树模板。

不过本文使用子集树模板。分析如下:

一个解x就是n个元素的一种排列,显然,解x的长度是固定的,n。

我们这样考虑:对于解x,先排第0个元素x[0],再排第1个元素x[1],...,当来到第k-1个元素x[k-1]时,就将剩下的未排的所有元素看作元素x[k-1]的状态空间,遍历之。

至此,套用子集树模板即可。

代码

'''用子集树实现全排列'''

n = 4
a = ['a','b','c','d']

x = [0]*n   # 一个解(n元0-1数组)
X = []      # 一组解

# 冲突检测:无
def conflict(k):
    global n, x, X, a
    
    return False # 无冲突
    
    
# 用子集树模板实现全排列
def perm(k): # 到达第k个元素
    global n, a, x, X
    
    if k >= n:  # 超出最尾的元素
        print(x)
        #X.append(x[:]) # 保存(一个解)
    else:
        for i in set(a)-set(x[:k]): # 遍历,剩下的未排的所有元素看作元素x[k-1]的状态空间
            x[k] = i
            if not conflict(k): # 剪枝
                perm(k+1)


# 测试
perm(0) # 从x[0]开始

效果图

img_7e3596636182a7d018f7023d3c3440fb.jpg

目录
相关文章
|
大数据 Python
Python 采集87个手绘风格PPT模板
Python 采集87个手绘风格PPT模板
199 1
|
SQL 前端开发 JavaScript
Python 教程之 Django(10)模板
Python 教程之 Django(10)模板
170 0
|
Python
Python 采集77个教学课件PPT模板
Python 采集77个教学课件PPT模板
272 0
|
计算机视觉 Python
OpenCV多模板匹配讲解与匹配汽车实战(附Python源码)
OpenCV多模板匹配讲解与匹配汽车实战(附Python源码)
544 0
OpenCV多模板匹配讲解与匹配汽车实战(附Python源码)
|
7月前
|
SQL 安全 算法
解读 Python 3.14:模板字符串、惰性类型、Zstd压缩等7大核心功能升级
Python 3.14 引入了七大核心技术特性,大幅提升开发效率与应用安全性。其中包括:t-strings(PEP 750)提供更安全灵活的字符串处理;类型注解惰性求值(PEP 649)优化启动性能;外部调试器API标准化(PEP 768)增强调试体验;原生支持Zstandard压缩算法(PEP 784)提高效率;REPL交互环境升级更友好;UUID模块扩展支持新标准并优化性能;finally块语义强化(PEP 765)确保资源清理可靠性。这些改进使Python在后端开发、数据科学等领域更具竞争力。
292 5
解读 Python 3.14:模板字符串、惰性类型、Zstd压缩等7大核心功能升级
|
12月前
|
Python
Seaborn 教程-模板(Context)
Seaborn 教程-模板(Context)
203 4
|
11月前
|
程序员 Linux Python
python中模板和包的使用
本文介绍了 Python 模块和包的基本概念及使用方法。模块是 Python 程序结构的核心,每个以 `.py` 结尾的源文件都是一个模块,包含可重用的代码。文章详细讲解了模块的导入方式(如 `import` 和 `from...import`),模块的搜索顺序,以及如何创建和发布自己的模块。此外,还介绍了包的概念,包是包含多个模块的特殊目录,并通过 `__init__.py` 文件定义对外提供的模块列表。最后,文章简述了如何使用 `pip` 工具管理第三方模块的安装与卸载。作者:大石头的笔记;来源:稀土掘金。
162 0
|
前端开发 JavaScript 数据库
python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器
python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器
|
关系型数据库 MySQL 数据库
python3连接MySQL数据库简单模板
python3连接MySQL数据库简单模板
196 0
|
JavaScript Java Python
【Azure 应用服务】在Azure App Service for Windows 中部署Java/NodeJS/Python项目时,web.config的配置模板内容
【Azure 应用服务】在Azure App Service for Windows 中部署Java/NodeJS/Python项目时,web.config的配置模板内容
185 0

推荐镜像

更多