擅长:python、mysql、java
<p>这个问题并不像它第一次出现的那样简单:从词汇表上看,每个组都必须是一个<em>组合</em>,并且您需要这些组的所有<em>互斥</em>排列。在</p>
<p>我认为这需要你编写一个递归生成器,使用字母表和大小列表。类似下面的代码(恐怕我还没有测试过…)公司名称:</p>
<pre><code>def foo(lexicon, size_list, result):
if len(size_list) == 0:
yield result
return
size = size_list[0]
for group in itertools.combinations(lexicon, size):
# remove used items from the lexicon
next_lex = lexicon[:]
for item in group:
next_lex.remove(item)
# recur at next level
foo(next_lex, size_list[1:], result + [group] )
foo( "ABCDEFG", [2, 2, 3], [] )
</code></pre>