擅长:python、mysql、java
<p><code>itertools.product</code>应该能帮到你。在</p>
<p>想法是这个:-
考虑A1,A2,…,a被板隔开。将有N-1块板。
如果有一个板,就有一个分段。如果没有板,则存在连接。
因此,对于给定的长度为N的序列,应该有2^(N-1)这样的组合。在</p>
<p>就像下面这样</p>
<pre><code>import itertools
lst = ['a', 'b', 'c', 'd']
combinatorics = itertools.product([True, False], repeat=len(lst) - 1)
solution = []
for combination in combinatorics:
i = 0
one_such_combination = [lst[i]]
for slab in combination:
i += 1
if not slab: # there is a join
one_such_combination[-1] += lst[i]
else:
one_such_combination += [lst[i]]
solution.append(one_such_combination)
print solution
</code></pre>