输出汉诺塔的实现方式?
Posted nanzh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输出汉诺塔的实现方式?相关的知识,希望对你有一定的参考价值。
汉诺塔实现将所有盘从A移动到C位置
分析:
(1)将A上n-1个盘子移动到B针(借助C针)
(2)将A针剩下的剩下的一个盘子移动到C针
(3)将n-1个盘子从B移动到C针上(借助A针)
事实上,上面3步操作包含下面两种操作。
(1)将多个盘子从一个针移动到另一个针上,这是一个递归的过程
(2)将1个盘子从一个针上移动到另一个针上
于是,实现方式可见下面源码(c++)
#include<iostream> using namespace std; void print_path(char src,char dest) { cout<<src<<"-->"<<dest<<endl; } void hanoi(int n,char src,char medium,char dest) { if(n==1) print_path(src,dest); else{ hanoi(n-1,src,dest,medium); print_path(src,dest); hanoi(n-1,medium,src,dest); } } int main(){ int m; cout<<"the number of diskes:"; cin>>m; cout<<"the moving step "<<m<<" diskes:"<<endl; hanoi(m,\'A\',\'B\',\'C\'); return 0; }
运行结果如下图所示:
来源:C++语言程序设计(第四版)
以上是关于输出汉诺塔的实现方式?的主要内容,如果未能解决你的问题,请参考以下文章