Petrichor_ll

导航

输入一个数,找出1到它之间所有数出栈的所有情况

counhc=int(input())
#nstr=input()

def fun(ins):
    outsl=[]
    if(len(ins)==0):
        return outsl
    if(len(ins)==1):
        outsl.append(ins[0])
        return outsl
    if(len(ins)==2):
        outsl.append(ins[0]+ins[1])
        outsl.append(ins[1]+ins[0])
        return outsl
    i=0
    while(i<len(ins)): #如果长度大于3,进入该循环,循环包含了ins[0]出现在任意位置的情况
        loutsl=fun(ins[1:i+1])
        routsl=fun(ins[i+1:len(ins)])#第一次循环:1在第一个位置,左为[],右为[234567];第二次循环:1在第二个位置,左为[2],右为[34567];以此类推
        if(len(loutsl)==0):
            for sstr2 in routsl:
                outsl.append(ins[0]+sstr2)
        if(len(routsl)==0):
            for sstr1 in loutsl:
                outsl.append(sstr1+ins[0])
        for sstr1 in loutsl:
            for sstr2 in routsl:
                outsl.append(sstr1+ins[0]+sstr2)
        i=i+1
    return outsl
     
        
ins=""  
for i in range(1, counhc+1):
    ins=ins+str(i)
#ins="1234"
outsl=fun(ins)
outsl.sort()
print(outsl)

  

posted on 2022-06-15 22:31  Petrichor_ll  阅读(76)  评论(0编辑  收藏  举报