acwing讲解篇之94. 递归实现排列型枚举
题目描述
题解思路
定义递归深度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
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!