定量金融学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
推5推2推10推2推9 mul添加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