python回溯法实现数组全排列输出

2022-05-03 00:00:00 数组 回溯 排列

python回溯法实现数组全排列输出
全排列解释:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。

"""
皮蛋编程(https://www.pidancode.com)
创建日期:2022/3/30
功能描述:python回溯法实现数组全排列输出
"""
from sys import stdout


def perm(li, start, end):
    if (start == end):
        for elem in li:
            stdout.write(elem)
        print('')
    else:
        for i in range(start, end):
            li[start], li[i] = li[i], li[start]
            perm(li, start + 1, end)
            li[i], li[start] = li[start], li[i]


if __name__ == '__main__':
    li = ['a', 'b', 'c', 'd']
    perm(li, 0, len(li))

输出结果如下:
abcd
abdc
acbd
acdb
adcb
adbc
bacd
badc
bcad
bcda
bdca
bdac
cbad
cbda
cabd
cadb
cdab
cdba
dbca
dbac
dcba
dcab
dacb
dabc

以上代码在python3.9环境下测试通过。

相关文章