擅长:python、mysql、java
<p>这看起来很管用:</p>
<pre><code>from itertools import combinations, islice
def cons(nums):
if len(nums)%2 or len(nums)<2:
raise ValueError
if len(nums) == 2:
yield (nums,)
return
for c in islice(combinations(nums, 2), len(nums)-1):
for sub in cons(tuple(set(nums) - set(c))):
yield ((c,) + sub)
def constellations(n):
return cons(range(1, n+1))
for c in constellations(6):
print c
</code></pre>
<p>输出:</p>
^{pr2}$
<p>为<code>constellations(8)</code>生成105个条目,该条目根据公式签出。<br/>
本质上,我要做的是只获取第一个元素和其他元素的组合,然后将剩余的元素传递到递归中——这可以确保没有重复的组。在</p>