python练习题6.8输出全排列(选作),


输入整数n(3<=n<=7),编写程序输出1,2,...,n整数的全排列,按字典序输出。

输入格式:

一行输入正整数n。

输出格式:

按字典序输出1到n的全排列。每种排列占一行,数字间无空格。

输入样例:

在这里给出一组输入。例如:

3


      
    

输出样例:

在这里给出相应的输出。例如:

123
132
213
231
312
321

代码如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import random

#求阶乘
def jc(n):
    sum = 1
    for i in range(1,n+1):
        sum *= i
    return sum

n = int(input())
t = list()
t1 = set()
for i in range(1,n+1):
    t.append(str(i))

while True:
    if len(t1) >= jc(n):
        break
    #首先要知道n个数字有n!种排列,我们用这个判断数据的数量
    random.shuffle(t) #随机排序
    t1.add("".join(t))
    #这里使用set集合是避免重复的数据
s = sorted(t1)
for i in s:
    print(i)

这个题目不难。记住下面两点即可。

1、random模块中的shuffle函数,这个函数是随机排序。

2、n个数字有n!种排列。


读书和健身总有一个在路上

相关内容

    暂无相关文章

评论关闭