二维数组,首项和确定,求第二项和的最大值
有如下数组
items = [[1,10], [3,15], [4,12], [2,9], [3, 17] ....]
从items中取出4个,要求item[0]和为10,求item[1]和的最大值。
有无最优解?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有如下数组
items = [[1,10], [3,15], [4,12], [2,9], [3, 17] ....]
从items中取出4个,要求item[0]和为10,求item[1]和的最大值。
有无最优解?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
由于思路停留在背包问题,代码确实出现了
bug
,即数量4
满足,但总和为10
并没有满足,实际情况是<=10
……原答案:
这个问题看似是个背包问题,实则比背包的条件更加苛刻。
每个
item
的两个数可以分别对应背包问题里的weight(重量)
和value(价值)
,但与背包不同的是:所以传统的动态规划和贪心算法我暂时没能想到对应的解法,我这里给出一段算法,借鉴了贪心的思路,但有所不同:
呃,不过说实话,我对自己这段代码【没有信心,不能保证最优解】,只是一个思路,所以还请其他诸位大神多提提意见。
^0^
以下是代码:
输出结果:
我的算法有问题,不能算出最优答案。
假设有2组结果首项和都为10,且第二项升序排列。
A : 1 3 5 7
B : 2 3 4 7
根据我的算法,会得到A结果,但是无法保证
1+3+5+7 > 2+3+4+7
=>1+5 > 2+4
输出结果:
思路:由于items[0]的总和很小且,把背包容量视为4,暴力枚举items[0]和一样时,items[1]和的最优值。