微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何找到元素之间的最小距离大于某个值且元素值之和最大的子集?

如何解决如何找到元素之间的最小距离大于某个值且元素值之和最大的子集?

我想在这里解决一个算法问题。

一个数组中有n个不同的元素,它们的位置从x_1到x_n。每个元素都有一个单独的 p 值(所以对于数组中的第 i 个元素,它的位置是 x_i,它的 p 值是 p_i)。

首先选择给定数组的任意子集 S(所以 0 k)。然后你必须找到这样的子集 S 中任何一对元素的 p 值的最大和。

关于如何在多项式时间内做到这一点的任何想法?

谢谢。

解决方法

动态编程

对于每个元素,您都可以选择是否包含它。如果包含它,则不能包含最后 k 个元素中的任何一个,当前值 + 当前索引处的最大值 - k。如果不包含当前元素,则最后一个索引最大值将是当前元素的最大值。

for(let i=0;i

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。