美文网首页
递归求全排列

递归求全排列

作者: 想象_442c | 来源:发表于2020-03-31 19:11 被阅读0次

    思路:

                    和手动求全排列一样,第一个位置有n种可能,第二个位置有n-1种可能......最后一个位置有1种可能

                    

                    第一个位置的n种可能就是与其他每个位置的元素进行交换来遍历,每种可能对应的后续位置的可能性就进入递归来描述,

    递归之后进行回溯,来进行第一个位置的下一次遍历,循环往复,直到递归到最后一个位置,进行check,然后退出递归

    代码:

    def f(l,begin,end):

        #退出条件

        if(begin==end):

            check(l)

            return

        #递归

        for i in range(begin,end):

            #让开始位置和后面的所有位置都做交换,然后进行下一次递归

            l[begin],l[i]=l[i],l[begin]

            f(l,begin+1,end)

            #进行回溯进入下一次循环

            l[begin],l[i]=l[i],l[begin]

    相关文章

      网友评论

          本文标题:递归求全排列

          本文链接:https://www.haomeiwen.com/subject/pesguhtx.html