作者penguin7272 (企鹅)
看板Programming
标题Re: [问题] 1-9位数不重复印出来 (Python)
时间Sat Dec 3 00:15:30 2016
认真做 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://webptt.com/cn.aspx?n=bbs/Programming/M.1480695338.A.18C.html