定量金融学gydF4y2Ba

计算机科学概念gydF4y2Ba

栈gydF4y2Ba

栈在计算机组织领域的一个影响是所谓的实现gydF4y2Ba堆栈的机器gydF4y2Ba.在这里,堆栈中的条目是算术操作数,机器指令集包含算术操作符。gydF4y2Ba

例如堆栈gydF4y2Ba 年代gydF4y2Ba 年代gydF4y2Ba ,gydF4y2BaMULgydF4y2Ba相当于gydF4y2Bas.push (s.pop () * s.pop ())gydF4y2Ba.所有其他基本运算(gydF4y2Ba添加gydF4y2Ba,gydF4y2BaDIVgydF4y2Ba,gydF4y2Ba子gydF4y2Ba)的定义方式类似。将会是什么gydF4y2Ba流行gydF4y2Ba一旦堆栈机器计算以下操作时返回?gydF4y2Ba

1 2 3 4 5 6 7 8 9gydF4y2Ba
Push 5 Push 2 Push 10 Push 2 Push 9 mul add div subgydF4y2Ba

河内之塔谜题的目标是移动所有的圆盘堆叠gydF4y2Ba三个gydF4y2Ba,遵循以下简单的规则:gydF4y2Ba

  • 同一时间只能移动一个磁盘。gydF4y2Ba
  • 每次移动包括从堆栈中的一个上面的磁盘,并把它放在另一个堆栈的顶部,即磁盘只能移动,如果它是堆栈中最上面的磁盘。gydF4y2Ba
  • 任何磁盘都不能放置在较小的磁盘之上。gydF4y2Ba

我们可以把每个堆栈看作一个堆栈对象。例如移动gydF4y2Ba紫色的gydF4y2Ba磁盘(第二个堆栈上的最上面的磁盘)到第三个堆栈将需要以下两个操作:gydF4y2Ba

  • stack_2.pop ()gydF4y2Ba
  • stack_3.push(紫色)gydF4y2Ba

一般来说,将一个磁盘从一个堆栈的顶部移动到另一个堆栈的顶部需要一行中进行两次操作。考虑下面这个几乎已经完成的谜题gydF4y2Ba

如果使用最少的堆栈操作来解决上述难题,需要多少操作?gydF4y2Ba

考虑转换十进制数(gydF4y2Ba以10为底的gydF4y2Ba)转换为二进制数(gydF4y2Ba以2为底gydF4y2Ba).该算法利用单个堆栈,连续取模gydF4y2Ba 2gydF4y2Ba 2gydF4y2Ba 然后把它除以2。这允许我们最终获得整数的位。gydF4y2Ba

次数gydF4y2Ba ngydF4y2Ba ngydF4y2Ba 一个数字必须被推入这个堆栈,才能被完全转换为一个函数gydF4y2Ba fgydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba f (n)gydF4y2Ba .是什么gydF4y2Ba fgydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba f (n)gydF4y2Ba ?gydF4y2Ba

×gydF4y2Ba

问题加载…gydF4y2Ba

注意加载…gydF4y2Ba

设置加载…gydF4y2Ba