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
微信扫码关注
抖音扫码关注