我有这个家庭作业问题:
您将获得一堆相同大小的 n 披萨盒,每个披萨盒包含1个披萨。盒子里的比萨饼按直径增加排序;直径都至多40厘米。
1a上。证明堆栈中必须存在两个比萨饼 其直径相差最多40 /( n -1)cm 1B。给出一个算法来找到这样一对。您的算法可以学习披萨直径的唯一方法是打开盒子并测量它。我们将该操作称为 measure ( i ),其中 i 是要打开的框的编号。您的算法应尽可能少打开披萨盒。对于完全信用,它应该在最坏的情况下打开 O (log n )框。
对于1a,我不知道如何以数学方式证明。对于1b,我理解我将不得不使用二进制搜索,但我不确切知道如何实现它。
我该如何解决这个问题?我很感激任何提示或任何建议如何处理它。
答案 0 :(得分:1)
对于1a,您可以使用归纳法:
基本上: 假设n = 2(至少两个比萨,否则没有差异)并最大化差异。 让其中一个比萨饼的直径为40,另一个比萨饼的直径为x 然后我们有40-x< 40 /(2-1)这是真的。
诱导步骤n => n + 1 你可以试试......