【发布时间】:2019-08-06 05:44:01
【问题描述】:
给定一个列表列表,打印列表列表,其中输出中的每个列表都是输入列表中元素的组合。
例如: I/P -> [['a','b'],['c'],['d','e','f']]
o/p -> ['a','c','d'], ['a','c','e'], ['a','c','f'], ['b','c','d'], ['b','c','e'], ['b','c','f']
我想出了回溯解决方案。下面是代码。但是,我很难找到它的时间复杂度。我认为它是 O(m^n),其中 m 是给定列表中最长列表的长度,n 是给定列表的长度。这样对吗?如何找到此类回溯问题的时间复杂度?
def helper(lists, low, high, temp):
if len(temp) == high:
print temp
for i in range(low, high):
for j in range(len(lists[i])):
helper(lists, i+1, high, temp+[lists[i][j]])
if __name__ == "__main__":
l = [['a','b'],['c'],['d','e','f']]
helper(l, 0, len(l), [])
【问题讨论】:
标签: python time-complexity backtracking