假设您有一架飞机,但它的燃料不足。除非这架飞机减少 3000 磅的乘客重量,否则它将无法到达下一个机场。为了尽可能多地挽救生命,我们想先把最重的人从飞机上扔下来。
哦,是的,飞机上有数百万人,我们需要一种最佳算法来找到最重的乘客,而不必对整个列表进行排序。
这是我尝试用 C++ 编写代码的代理问题。我想按重量对乘客 list 进行“partial_sort”,但我不知道我需要多少元素。我可以实现自己的“partial_sort”算法(“partial_sort_accumulate_until”),但我想知道是否有更简单的方法可以使用标准 STL。
最佳答案
但是,这对您的代理问题没有帮助:
如果 1,000,000 名乘客减重 3000 磅,则每位乘客必须减掉 (3000/1000000) = 每人 0.003 磅。这可以通过抛弃每一件衬衫、鞋子,甚至可能是指甲剪来实现,从而拯救所有人。这假设在飞机使用更多燃料所需的重量损失增加之前进行有效的收集和抛弃。
实际上,他们不再允许在船上使用指甲刀了,所以已经淘汰了。
关于c++ - 把最胖的人从重载的飞机上扔下来。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7746648/