面试常考算法题(七)-汉诺塔问题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

⾯试常考算法题

(七)-汉诺塔问题

⼀. 编程题

1.

对于传统的汉诺塔游戏我们做⼀个拓展,我们有从⼤到⼩放置的n 个圆盘,开始时所有圆盘都放在左边的柱⼦上,按照汉诺塔游戏的要求我们要把所有的圆盘都移到右边的柱⼦上,请实现⼀个函数打印最优移动轨迹。给定⼀个int n ,表⽰有n 个圆盘。请返回⼀个string 数组,其中的元素依次为每次移动的描述。描述格式为:move from [left/mid/right] to [left/mid/right]。

测试样例:

1

返回:move from left to right

2.

有⼀个int 数组arr 其中只含有1、2和3,分别代表所有圆盘⺫前的状态,1代表左柱,2代表中柱,3代表右柱,arr[i]的值代表第i+1个圆盘的位置。⽐如,arr=[3,3,2,1],代表第1个圆盘在右柱上、第2个圆盘在右柱上、第3个圆盘在中柱上、第4个圆盘在左柱上。如果arr 代表的状态是最优移动轨迹过程中出现的状态,返回arr 这种状态是最优移动轨迹中的第⼏个状态。如果arr 代表的状态不是最优移动轨迹过程中出现的状态,则返回-1。

给定⼀个int 数组arr 及数组的⼤⼩n ,含义如题所述,请返回⼀个int ,代表所求的结果。

测试样例:

[3,3]

返回:3

登录⽜客⺴,参与以上题⺫讨论,查看更多笔试⾯试题

技术QQ 群:379386529 微博:/nowcoder 微信

⽜客⽹-中国最⼤IT 笔试/⾯试题库⽜客出品-

相关文档
最新文档