我已经对这个问题思考了两天,但是还是没有想出一个解决方案。我需要一个函数f(s,n)
,它返回包含所有长度为n
的s
子集的集合。
演示:
s={a, b, c, d}
f(s, 4)
{{a, b, c, d}}
f(s, 3)
{{a, b, c}, {a, b, d}, {a, c, d}, {b, c, d}}
f(s, 2)
{{a, b}, {a, c}, {a, d}, {b, c}, {b, d}, {c, d}}
f(s, 1)
{{a}, {b}, {c}, {d}}
我觉得递归是解决这个问题的方法。我一直在尝试类似于以下内容的东西:
f(S, n):
for s in S:
t = f( S-{s}, n-1 )
...
但这似乎并没有起到作用。我注意到len(f(s,n))
似乎是二项式系数bin(len(s), n)
。我想这可能可以在某种程度上利用。
请问我能为您提供帮助吗?
n
的组合,因为他们的结果是无序元组@Lundin - user1984std::set
带有强制排序顺序,并且您必须提前定义一种比较集合项的方法才能使用容器类。 - Lundin