📜  门| GATE-CS-2003 |第64章

📅  最后修改于: 2021-06-29 18:31:11             🧑  作者: Mango

令S为大小n≥1的堆栈。从空堆栈开始,假设我们按顺序推入前n个自然数,然后执行n次弹出操作。假定推和弹出操作各花费X秒,并且在这样一个堆栈操作的结束与下一个操作的开始之间经过了Y秒。对于m≥1,将m的堆栈寿命定义为从Push(m)结束到从S中删除m的弹出操作开始所经过的时间。此堆栈元素的平均堆栈寿命为
(A) n(X + Y)
(B)3年+ 2倍
(C) n(X + Y)– X
(D) Y + 2X答案: (C)
说明:需要背景知识–堆栈和基础数学

Tn为堆栈的第n个元素的时间跨度。让我们首先找出n = 1至n的Tn之和

Stack Lifetime of last element, Tn = Y (Since it is popped as soon 
                                        as it is pushed on the stack)

Stack Lifetime of last element, Tn-1 = Tn  + 2X + 2Y 
                                       (The time needed to push and then
                                        pop nth element plus two pauses Y each).
                        = 2X + 3Y 

Stack Lifetime of last element, Tn-2 = Tn-1  + 2X + 2Y (Using the Same reasoning above)
                        = 4X + 5Y
.
.
.
Stack Lifetime of 1st element = 2(n-1)X + (2n-1)Y    (Generalizing the pattern)

Sum of all the time spans of all the elements = (Σ 2(n-1)X) + (Σ (2n-1)Y) 
                                                                   for n = 1 to n

= 2X(1 + 2 + . . . + n-1) + Y(1 + 3 + 5 + . . . + (2n-1))

使用2个身份

  • 第一次求和的自然数之和=(n *(n + 1))/ 2
  • Sn =(n / 2)(a + 1)AP系列的总和,其中a为第一项,l最后为第二个求和

以上是

=(2X(n-1)n)/ 2 + Y(n / 2)*(1 + 2n-1)

= n(n(X + Y)-X)

因此,平均值=总和/ n = n(X + Y)-X。因此,选项(c)

该解释由Pranjul Ahuja提供。这个问题的测验