acwing讲解篇之94. 递归实现排列型枚举

发布时间:2024年01月20日

题目描述

题解思路

定义递归深度deep,数字使用情况used,选择的数字顺序path

进行递归

终止条件为递归深度达到n层时,打印path,然后返回

深度加一
遍历未使用的数字,选择数字,然后进行递归,递归结束,恢复used
恢复深度

直到整个递归结束,程序结束

题解代码

n = int(input())

used = 0
deep = 0
path = [0 for _ in range(n)]
def dfs():
    global used
    global deep
    if deep == n:
        for i in range(n):
            print(path[i], end=' ')
        print()
        return
    deep += 1
    for i in range(n):
        if used >> i & 1 == 0:
            path[deep - 1] = i + 1
            used |= 1 << i
            dfs()
            used -= 1 << i
    deep -= 1
dfs()
文章来源:https://blog.csdn.net/qq_67733273/article/details/135721407
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。