擅长:python、mysql、java
<p>您的代码似乎生成以下内容,以生成非空<code>array</code>的所有子序列:</p>
<ol>
<li><code>array</code>(也就是说,包括<code>array</code>中的第一项和最后一项的所有子序列)</li>
<li><code>array[1:]</code>的所有子序列(即,所有不<em>但</em>的子序列包括<code>array</code>中的第一项)</li>
<li><code>array[:-1]</code>的所有子序列(即,所有不<em>但</em>的子序列包括<code>array</code>中的最后一项)</li>
</ol>
<p>因此,复制的来源是明确的:任何在<code>array</code>中既没有第一项也没有最后一项的子序列都将被计数两次(在任何给定的调用中,这意味着<code>array</code>越长,可以获得的副本就越多)</p>
<p>希望解决方案也很清楚;删除#1(下面将介绍它),然后</p>
<ul>
<li>替换#3将所有<em>不</em>的子序列包括^{<cd1>中的第一项,或者</li>
<li>将#2替换为包含^{<cd1>中最后一项的所有子序列</li>
</ul>