擅长:python、mysql、java
<p>这是一种方法</p>
<pre><code>NumbersList = [1,5,9,4,6,8,12,12,1,3,6,8,7,8,2]
def GetNumbers(NumbersList, number):
tmpList = []
summ = 0
srtd = sorted(NumbersList)
for i in range(len(srtd)-1, 0, -1):
if summ + srtd[i] > number:
break
summ += srtd[i]
tmpList.append(srtd[i])
for i in range(len(NumbersList)):
if NumbersList[i] == number - summ:
tmpList.append(NumbersList[i])
if sum(tmpList) == number:
return tmpList
else:
return None
result = GetNumbers(NumbersList, 27)
print(result)
</code></pre>
<p>当然不是最好的,但这一次做得很好</p>
<p>首先,对列表进行排序,找出所有不超过限制的最大数字。然后你找到丢失的号码。
如果存在,则返回数组。
如果没有,我们将不返回</p>
<p>这段代码并不适用于所有情况,但它是一个很好的开始</p>
<p>最简单的方法是对列表排序,向后循环,然后</p>
<p>下一个号码还有空位吗</p>
<ul>
<li>如果有,您可以将其添加到列表中</李>
<li>如果没有,跳过</李>
</ul>
<p>最后,您应该检查您的tmpList之和。有可能其总和为!=您的预定号码</p>