a = [1, 2, 3]
b = ['a', 'b', 'c', 'd']
c = ['@@', '$$']
# 主体函数
def combination(a, b, c):
config = [a, b, c]
res = []
tmp = []
dfs(res, tmp, config, 0)
print(res)
print(len(res))
def dfs(res=[], tmp=[], config=[], i=0):
if i == len(config):
res.append(tmp.copy())
else:
for e in config[i]:
# change spot
tmp.append(e)
# new condition,new recursion
dfs(res, tmp, config, i + 1)
# restore spot
tmp.pop(len(tmp) - 1)
# 执行主体函数
combination(a,b,c)
'''
打印结果:
[[1, 'a', '@@'], [1, 'a', '$$'], [1, 'b', '@@'], [1, 'b', '$$'],
[1, 'c', '@@'], [1, 'c', '$$'], [1, 'd', '@@'], [1, 'd', '$$'],
[2, 'a', '@@'], [2, 'a', '$$'], [2, 'b', '@@'], [2, 'b', '$$'],
[2, 'c', '@@'], [2, 'c', '$$'], [2, 'd', '@@'], [2, 'd', '$$'],
[3, 'a', '@@'], [3, 'a', '$$'], [3, 'b', '@@'], [3, 'b', '$$'],
[3, 'c', '@@'], [3, 'c', '$$'], [3, 'd', '@@'], [3, 'd', '$$']]
24
'''