【发布时间】:2020-08-26 20:08:36
【问题描述】:
子集的权重是每个键的值的长度。
这是我的尝试:
def nonDivisibleSubset(k, s):
remdict={}
result=[]
for i in range(len(s)):
rem=s[i]%k
if rem not in remdict:
remdict[rem]=[s[i]]
else:
remdict[rem].append(s[i])
b=dict(sorted(remdict.items(), key= lambda x: len(x[1]), reverse=True))
Input:
k=7
{2: [576, 338, 149, 702, 282, 436], 6: [496, 727, 209], 5: [278, 124], 4: [410, 718], 1: [771, 575]}
在这本字典中,我只想附加键 2,6,4 的值,因为 2+6!=7 和 2+4!=7 和 6+4!=7**
【问题讨论】:
-
为什么是 2,4,6 而不是 4,5,6? 4+5、4+6 和 5+6 也不等于 7。
-
对不起,我忘了补充。值的长度应该是最大值。
-
首先想到的是极大团,如果
(u,v)是优势u+v!=k,但极大团是NP Hard,希望有更好的解决方案... -
4,5,6 为 3 个值,与 2,4,6 相同。那么什么是“最大”?
-
键 4,5,6 的值长度为 7,而 2,4,6 为 11。因此应选择 2,4,6,因为它具有最大值长度