|
10鱼币
a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]
已知a列表的长度14。
如何使用递归方法,生成长度为7的列表,且元素组合不同。。。例如 ((已知b列表长度为3。。b=[1,2,3])...生产长度为2的列表。。..新列表=[1,2],.,新列表[2,3]...新列表=[1,3]。只有3种组合了 )
如何使用迭代方法,生成长度为7的列表,且元素组合不同。。。例如 ((已知b列表长度为3。。b=[1,2,3])...生产长度为2的列表。。..新列表=[1,2],.,新列表[2,3]...新列表=[1,3]。只有3种组合了 )
两种方法,打印出生所有生产的列表。。。谢谢
- a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
- b = []
- i = 0
- #递归方法(dfs)
- def get(l, k):
- global b
- if l == 0:
- print(b)
- if len(b) > 0 and b[-1] == 14:
- return
- for i in range(k+1, len(a)):
- b.append(a[i])
- get(l-1, i)
- b = b[:len(b)-1]
- get(7, -1)
- #迭代方法(暴力搜索)
- all_answer = []
- max_ = 2 ** 14 - 1
- for i in range(max_):
- if ((i) % 2 +
- (i >> 1) % 2 +
- (i >> 2) % 2 +
- (i >> 3) % 2 +
- (i >> 4) % 2 +
- (i >> 5) % 2 +
- (i >> 6) % 2 +
- (i >> 7) % 2 +
- (i >> 8) % 2 +
- (i >> 9) % 2 +
- (i >> 10) % 2 +
- (i >> 11) % 2 +
- (i >> 12) % 2 +
- (i >> 13) % 2) == 7:
- all_answer.append([a[j] for j in range(14) if (i >> j) % 2])
- print(*list(sorted(all_answer)), sep = '\n')
复制代码
|
|