python 火车进站-即数的全排列问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/w1573007/article/details/53353865

火车进站-即数的全排列问题

给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号。要求以字典序排序输出火车出站的序列号。
输入描述:
有多组测试用例,每一组第一行输入一个正整数N(0<N<10),第二行包括N个正整数,范围为1到9。
输出描述:
输出以字典序从小到大排序的火车出站序列号,每个编号以空格隔开,每个输出序列换行,具体见      sample。
输入示例:
  3
  1 2 3
输出示例:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

代码

#! usr/bin/env python
# -*- coding: utf-8 -*-
list1=[]
list2=[]
list3=[]
print "Enter the number of items"
i=input()
for j in range(i):
    k=input()
    if k<0 or k>10:
        print "erro"
        break
    else:
        list1.append(k)

def pl(s):
    if len(s)<1:
        #print s,len(s)
        yield s 

    else:
        for x in pl(s[1:]): #分片
            for y in range(len(s)):
                yield x[:y]+s[0:1]+x[y:]

list2=pl(list1)

list3=sorted(list2,reverse=False)#按字典序排序
#循环输出
for m in list3:
    print m

结果

*说明:python 好像不支持空格式连续输入
它的循环输出也最好是一个列表或远组
yield的资料看的不是很懂,望大牛可以解释
这里递归好像是以一种后根遍历的调用*

这里写图片描述

猜你喜欢

转载自blog.csdn.net/w1573007/article/details/53353865