 |
|
1
faketemp Nov 20, 2016
#Python 3.x from itertools import combinations from heapq import nlargest
def trans(szNum): return szNum.translate(str.maketrans('','',',,"“”')) goal =2000000 num = [2627958.99,1903995.67,3133207.37,1000626.65,1377193.42,389084.48,1445055.87,402488.74,2908761.03,1154304.95,1384296.51,895361.64,5769.90,215879.19,56482.19,517084.97,41702.36,539160.33]
[num.remove(i) for i,v in enumerate(num) if v > goal] countNum = len(num) dResult = {} for j in range(1,countNum + 1): tL = combinations(num,j) dResult.update({k:v for k,v in zip(map(sum,tL),tL) if k<=goal})
print({k:dResult[k] for k in nlargest(5,dResult)}) -------------------------------------------------------------------------------------------- 大概是上面这种伪代码(演示需要,未测试),只是这种穷举的算法在 num 超过 50 的情况下就会导致内存耗尽(更别说 500 个值参与运算了),即使使用 X64 Python ,也因计算量大导致时间过长——这种方法并不可取, V 友有何高见????
|