擅长:python、mysql、java
<p>所以首先,我们需要找到所有不同的组合,然后从中找到最大值</p>
<p>这是查找所有不同组合的代码:</p>
<pre><code>def check(d, s, k):
for i in d:
if i + s == k:
return False
return True
for i in s:
temp = [i]
d = s.copy()
d.pop(i)
for j in d:
if check(temp, j, k):
temp.append(j)
temp.sort()
res_lst.append(temp)
unique_data = [list(x) for x in set(tuple(x) for x in res_lst)]
</code></pre>
<p>(参考如何查找<code>unique_data</code>:<a href="https://stackoverflow.com/questions/3724551/python-uniqueness-for-list-of-lists">Python: Uniqueness for list of lists</a>)</p>
<p>要查找最大子集,请执行以下操作:</p>
<pre><code>res = []
res_sum = 0
for l in unique_data:
tmp_sum = 0
for n in l:
tmp_sum += len(s[n])
if tmp_sum > res_sum:
res = l
res_sum = tmp_sum
return res
</code></pre>