永发信息网

Python中用递归的思想求ABCDE的全排列

答案:1  悬赏:40  手机版
解决时间 2021-01-23 12:06
  • 提问者网友:人生佛魔见
  • 2021-01-22 14:13
请说一下思路,要求是能够写出ABDE的全部排列
谢谢
最佳答案
  • 五星知识达人网友:北方的南先生
  • 2021-01-22 15:28
def p(s,res=[]):
    #将字符c插入到数列ar中,会有多少种排列
    def h(c,ar):
        return [ar[:i]+[c]+ar[i:] for i in range(len(ar)+1)]
    #已有结果arr的基础上,如果增加c字符,arr会变成多少种排列
    def g(c,arr,res=[]):
        if arr==res==[]:
            return [[c]]
        elif arr==[]:
            return res
        else:
            return g(c,arr[1:],res+h(c,arr[0]))
    #主体递归
    if s=='':
        return res
    else:
        return p(s[1:],g(s[0],res))

if __name__=='__main__':
    s='ABCDE'
    for x in p(s):
        print(''.join(x))
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯