今天求一个闭包,走了不少弯路,谨此记录。
一开始,我是这样的:
import string
a1 = string.ascii_lowercase
a2 = string.digits
A = []
for i in a1 + a2 + ' ' :
for j in a1 + a2 + ' ' :
A = A + [i+j]
空格代表空,求a1+a2不大于2的闭包。
这个程序的问题在于'a '等价于' a'。
然后改为
import string
a1 = string.ascii_lowercase
a2 = string.digits
A = []
for i in a1 + a2 + ' ' :
for j in a1 + a2 :
A = A + [i+j]
然后这个程序的问题在于没有空集。
正确的作法是深搜:
import string
a1 = string.ascii_lowercase
a2 = string.digits
def dfs(n) :
res = ['']
tmp = []
if(n==0) :
return res
for i in a1+a2 :
tmp = dfs(n-1)
for j in tmp :
res = res + [i+j]
return res








网友评论