【发布时间】:2017-05-21 18:06:45
【问题描述】:
我必须在真实数据数组中找到 3 个最大值。问题是这 3 个值必须在特定的最小值(即参数)上有所不同。 这意味着如果我有一个包含 10 个元素 {1,2,3,4,5,6,7,8,9,10} 的数组,这个数组中的 3 个最大值是 8,9,10 但如果参数例如是“2”,这 3 个最大值必须至少变化大约“2”,所以在我的情况下,真正的最大值将是 10、8、6。 我相信程序的算法应该是这样的:
1) 找到 3 个最大值(循环) 2)验证它们是否至少在参数上有所不同 2a) 如果是,则返回这 3 个值 2b)如果不是,返回循环,再次搜索3个值,但忽略这个不满足条件的值?
我无法想象这个解决方案的真实 C++ 代码。谁能给点建议怎么做?
【问题讨论】:
-
数组中的值是否排序?
-
std::sort数组中的数据。然后从最高值开始遍历数组(这将是您的最大值之一),然后跳到由您的“参数”确定的下一个并选择它,然后是下一个。如果您不想对整个数组进行排序,请使用std::nth_element将元素放置在特定的 skip 位置