认为:
仅使用 4 个字母(a、b、c、d)
假设我有一本包含 4 个字母的出现次数(>=0)的字典
d = {"a":1, "b":2, "c":1, "d":3}
我得到了一个“步数”。
我想找到给定“步数”出现减法的所有可能的字典。
例如
# given the above dictionary and a steps of 2
moo = {"a":1, "b":1, "c":1, "d":2}
# moo is a possibility because I simply took away 1 b and 1 d
# how do I find all the possibilities? (note: occurrences cannot be negative)
编辑:步骤正好是 2 个步骤
注意:我想找到所有“moo”,或者在给定参考字典和许多步骤的情况下可能的所有字典。我不在乎测试两个字典是否满足步骤要求。
我想我想出了一些递归代码来解决这个问题:
def genDict(d, steps):
if steps == 0:
return [d]
dList = []
for key, value in d.items():
if value > 0:
temp = dict(d)
temp[key] = value -1
dList += genDict(temp, steps-1)
return dList
任何人都有一个不会占用内存的非递归解决方案?