对于学校作业我将为以下问题创建Javacode,我想要一些关于伪代码的提示和帮助,而不是实际的java代码。它必须是递归的。就个人而言,我认为它是背包问题或加权间隔调度的某种变化。无论如何,这就是问题:
操作系统背后的公司通过提供安全更新 互联网。在某个特定时刻,有许多更新 开发,并为每次更新准备好日期。
发布更新包含固定成本,每个成本相等 更新和可变成本,更新之间可能会有所不同。
为了最大限度地降低成本,该公司正在探索这种可能性 捆绑更新。捆绑包是附带的一系列更新 一个人去。捆绑的固定成本等于恒定成本 一次更新,但捆绑的可变成本被定义为 其中更新的可变成本之和。
捆绑更新可以因此降低不变成本,但它也有 缺点:推迟捆绑中的所有安全更新,直到 完整捆绑已准备好意味着用户的风险更长。这个风险是 建模为额外费用。从本质上讲,两者之间存在权衡 直接发送更新(具有高额不变成本)或 推迟并将其装运(具有高风险)。
假设更新按准备好的时间排序。假设 发布更新时,所有先前准备好的更新 也被运送(在同一捆绑或早期捆绑中)。该 公司想知道如何捆绑更新,以便总计 所有捆绑包的成本都降至最低。
提供以下信息:
- 已编号的安全更新列表,按其准备就绪的日期排序(更新由1,2,...表示)
- 运送捆绑包的不变成本
- 每次更新,发货的可变成本
- 对于每对更新,将所有更新从第一次更新推迟到第二次更新,直到第二次更新发货为止。
答案 0 :(得分:1)
考虑如何计算发送所有更新1到k的最低成本f(k)。
这可以递归计算,但请确保记住函数调用的结果,否则复杂性将成为指数。