• python 全排列


    itertools模块现成的全排列:
    
    for i in itertools.permutations('abcd',4):
        print ''.join(i)
    
    相关全排列算法:
    def perm(l):  
        if(len(l)<=1):  
            return [l]  
        r=[]  
        for i in range(len(l)):  
            s=l[:i]+l[i+1:]  
            p=perm(s)  
            for x in p:  
                r.append(l[i:i+1]+x)  
        return r 
    
    #递归,下降二叉树
    def perm(lis,begin,end):
        #print "调用perm函数"
        if begin>=end:
            print lis
        else:
            i = begin 
            for num in range(begin,end):
                lis[num],lis[i] = lis[i],lis[num] #固定当前位置,在进行下一位的排列
                #print "-----num:%d,begin:%d"%(num,begin)
                perm(lis,begin+1,end)
                #print "*****num:%d,begin:%d"%(num,begin)
                #调用结束之后还需要回溯将交换位置的元素还原,以供其他下降路径使用(二叉树)
                lis[num],lis[i] = lis[i],lis[num]
    
    lis = [1,2,3,4]
    perm(lis,0,len(lis))
    
  • 相关阅读:
    C#读取并修改app.congig的实例
    apache:添加cgi模式
    初识golang
    Golang: pprof
    Golang:测试map是否存在
    beego: 获取request参数
    shell:crontab
    初识Iaas,paas
    初识golang
    Go-new和make
  • 原文地址:https://www.cnblogs.com/nyist-xsk/p/9463495.html
Copyright © 2020-2023  润新知