深度优先搜索-全排列问题

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])	# 回溯

猜你喜欢

转载自blog.csdn.net/ten_sory/article/details/108470868
今日推荐