a524: 手機之謎
這篇教學會示範 ZeroJudge 基礎題庫「a524: 手機之謎」的解題過程。
題目需求
題目會提供一個數字,表示密碼的長度,密碼為一串 1~9 不重複的數字,需要透過程式求出所有密碼組合 ( 依字典順序反向排列 )。
題目連結:a524: 手機之謎
解答
因為要算出密碼的所有排列組合,所以可以使用 Python 標準函式庫 itertools 裡的 permutations 來實作,先將指定範圍的數字改成文字串列,再透過 permutations 算出所有排列組合,最後將這些組合列出即可。
import itertools # 載入 itertools 函式庫
while True:
try:
n = int(input()) # 將輸入的文字轉成數字
a = [str(i) for i in range(1, n+1)] # 將 1~n 的數字轉換成文字串列
a = a[::-1] # 反轉串列
p = itertools.permutations(a) # 使用排列組合迭代器算出所有組合
for i in p:
print(''.join(i)) # 將組合合併成字串印出
except:
break
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~