找到一种算法,从一组N个比萨饼中找到类似的比萨饼

时间:2017-01-21 22:44:31

标签: algorithm sorting data-structures

我有这个家庭作业问题:

  

您将获得一堆相同大小的 n 披萨盒,每个披萨盒包含1个披萨。盒子里的比萨饼按直径增加排序;直径都至多40厘米。

     

1a上。证明堆栈中必须存在两个比萨饼   其直径相差最多40 /( n -1)cm   1B。给出一个算法来找到这样一对。您的算法可以学习披萨直径的唯一方法是打开盒子并测量它。我们将该操作称为 measure i ),其中 i 是要打开的框的编号。您的算法应尽可能少打开披萨盒。对于完全信用,它应该在最坏的情况下打开 O (log n )框。

对于1a,我不知道如何以数学方式证明。对于1b,我理解我将不得不使用二进制搜索,但我不确切知道如何实现它。

我该如何解决这个问题?我很感激任何提示或任何建议如何处理它。

1 个答案:

答案 0 :(得分:1)

对于1a,您可以使用归纳法:

基本上: 假设n = 2(至少两个比萨,否则没有差异)并最大化差异。 让其中一个比萨饼的直径为40,另一个比萨饼的直径为x 然后我们有40-x< 40 /(2-1)这是真的。

诱导步骤n => n + 1 你可以试试......