tot = 0
# arr为元素数组,n为元素个数,vis为目标存储数组
def perm(arr, n, vis):
if len(vis) == n:
global tot
tot += 1
print(vis)
# return # 剪枝,如果没有,那么会再得到解之后,继续下面的循环,当然了,下面的循环每一次循环if语句都是False,然后结束。所以这个剪枝,可以解决n!*n次循环。
for i in range(n):
if arr[i] not in vis:
vis.append(arr[i])
perm(arr, n, vis)
vis.remove(arr[i]) # 回溯
深度优先搜索-全排列问题
最新推荐文章于 2021-08-23 14:19:59 发布