我需要从长度为n
的列表中生成长度为k
的所有组合,并且我必须使用递归来完成。使用递归计算长度为n的列表中的长度为k的组合
例如:
INPUT: choose_sets([1,2,3,4],3)
OUTPUT: [[1,2,3],[1,2,4],[1,3,4],[2,3,4]]
INPUT: choose_sets([1,2,3,4],2)
OUTPUT: [[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]]
我被困在代码中实现这一点,所以我会很乐意为一些帮助。 这是到目前为止我的代码(我想的东西只是不知道是什么):
def choose_sets(lst,k):
if k == len(lst):
return lst
if k == 0:
return []
if k > len(lst):
return []
sets=[]
sub_lst=lst[:]
sub_lst.remove(sub_lst[0])
a= choose_sets(sub_lst,k-1)
for i in a:
i.append(lst[0])
sets.append(a)
b= choose_sets(sub_lst,k)
sets.append(b)
return sets
你使用什么语言,到目前为止特别错误? – PengOne 2011-12-30 19:17:18
这是功课吗? – 2011-12-30 19:21:53
我使用的Python和输出是不正确的,我真的不知道如何使其正确.. – user1123417 2011-12-30 19:23:35