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

📅  最后修改于: 2021-09-26 04:34:24             🧑  作者: Mango

设 S 是一个大小为 n ≥ 1 的堆栈。从空堆栈开始,假设我们按顺序压入前 n 个自然数,然后执行 n 个弹出操作。假设 Push 和 pop 操作各需要 X 秒,并且在一个这样的堆栈操作结束和下一个操作开始之间经过 Y 秒。对于 m ≥ 1,将 m 的堆栈寿命定义为从 Push(m) 结束到从 S 中移除 m 的弹出操作开始所经过的时间。此堆栈中元素的平均堆栈寿命为
(A) n (X + Y)
(B) 3Y + 2X
(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*(n+1))/2 对于第一次求和
  • Sn = (n/2)(a+l) AP 系列的总和,a 作为第一项,l 作为第二项的最后一项

以上总和是,

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

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

因此Average = Sum/n = n(X+Y)-X 。因此选项(c)

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