约在十九世纪末,欧洲出现了一种称为汉诺塔( Tower of hanoi)的游戏。游戏的装置是一块铜板,上面有三根金刚石的杆,杆上放着从大到小的64个盘子,如图所示。
游戏的目标是把所有的盘子从一根杆上移到另一根杆上,还有一根杆作为中间过渡。游戏规定每次只能移动一个盘子,并且大盘子不能压在小盘子上面。

设计汉诺塔问题的算法,先不考虑64个盘而考虑N个盘的一般情况。要想将A杆上
的N个盘移至C杆,可以这样设想:
(1)以C盘为临时杆,从A杆将1至N-1号盘移至B杆。
(2)将A杆中剩下的第N号盘移至C杆。
(3)以A杆为临时杆,从B杆将1至N-1号盘移至C杆。步骤(2)只需移动一次就可以
完成;步骤(1)与(3)的操作则完全相同,唯一区别仅在于各杆的作用有所不同。这样,原问题被转换为与原问题相同性质的、规模小一些的新问题。即:hanoi (N,A,B,C)可转化为 hanoi(N-1,A,C,B)与 hanoi(N-1,B,A,C)。
其中 hanoi中的参数分别表示需移动的盘数、起始盘、临时盘与终止盘,这种转换直至转入的盘数为0为止,因为这时已无盘可移了。解决该问题的这种算法思想是( )
【考点】解析算法及其实现.
【答案】D
【解答】
【点评】
声明:本试题解析著作权属菁优网所有,未经书面同意,不得复制发布。
发布:2024/11/14 8:0:1组卷:4引用:1难度:0.8