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!種排列。


讀書和健身總有一個在路上


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM