假设您拥有一家必须许可软件模块的公司。您每月只能购买一个许可证。软件许可证的成本都是不同的,由p1,pn给出。所有许可证的成本每月上升一个因子r(r> 1)。因此价格 第i个产品的许可证是pi * r ^ m 几个月后。设计一个n log n算法来查找什么顺序 购买许可证以最大限度地降低公司的总成本。
我的第一个解决方案是首先订购最昂贵的许可证,因为它们的成本增加最快。然而,答案对我来说太简单了。我在考虑这个错误吗?
答案 0 :(得分:1)
解决这样的问题的一部分是提出一个证据,证明你提出的解决方案确实有效。根据你在问题中的说法,这是一个尝试:
假设最佳解决方案不按成本递减顺序获取许可证。取Xi和Xj两个许可证,假设Xi< Xj和i<学家现在交换它们。其他许可证的费用不变。来自这两个许可的成本从Xi * r ^ i + Xj * r ^ j变为Xi * r ^ j + Xj * r ^ i,只要r> 1,这是一个减少。因此,任何不按成本递减顺序排列的解决方案都可以得到改善,而最佳解决方案确实是按照成本的降序订购许可证。