问题:有一组 float 型数值(设为 500 个),设目标值 goal 为 2000000 ,若单个数值不能拆分,如何求出数组中任意个数数值之和最接近 goal 的一组数值组合??
尝试:先删除数组中大于 goal 的所有数值(减少运算量),用 python 的 itertools.combinations 来生成任意个数数值的所有可能组合,逐个求和并过滤掉总和大于 goal 值的组合,最后 max 得出结果
失败:然而想法是好的,上述尝试生成的组合可能超过百亿,运行几十秒直接“ Memory Error ”
难点: 需要求出最接近 goal (而非等于)的一个组合,是不是意味着必须穷举所有可能??
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.