Re: [問題] 1-9位數不重複印出來 (Python)
認真做 dfs, 結果是照字典序排
這個比較快的版本是直接改狀態
benchmark N = 8, 前篇 python3 用 len(set(x)) = len(x) 要 100 秒
這份大概五秒 XD
#!/usr/bin/env python3
import sys
def solve(N):
used = [False] * 10
strs = []
def dfs():
yield ''.join(strs)
if len(strs) == N:
return
for i in range(10):
if not used[i]:
strs.append(str(i))
used[i] = True
yield from dfs()
strs.pop()
used[i] = False
for i in range(1, 10):
used[i] = True
strs.append(str(i))
yield from dfs()
used[i] = False
strs.pop()
power = int(sys.argv[1])
print(', '.join(solve(power)))
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 158.222.146.102
※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1480695338.A.18C.html
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章