问题:有N个数组,每个数组中都有不同个数的元素, 现需要在每一个数组中随机选一个元素和其它元素之间之间组合, 每个数组中都需选一个,例如 li = [['a', 'b'], ['1', '2'], ['x', 'y', 'z']], 使用算法做一个全排列
li = [['a', 'b'], ['1', '2'], ['x', 'y', 'z']]
end = len(li)
result = []
path = []
# 暴力回溯算法
def backtracking(index):
if index == end:
result.append(path[:])
return
cur_list = li[index]
for i in range(len(cur_list)):
path.append(cur_list[i])
backtracking(index + 1)
path.pop()
backtracking(0)
print(result)
运行结果:
[['a', '1', 'x'], ['a', '1', 'y'], ['a', '1', 'z'], ['a', '2', 'x'],
['a', '2', 'y'], ['a', '2', 'z'], ['b', '1', 'x'], ['b', '1', 'y'],
['b', '1', 'z'], ['b', '2', 'x'], ['b', '2', 'y'], ['b', '2', 'z']]