Ex3_13.cpp
上传用户:wuzhousb
上传日期:2022-07-12
资源大小:380k
文件大小:1k
源码类别:

书籍源码

开发平台:

Visual C++

  1. /*【例3.13】汉诺塔问题。有A、B、C三根柱子,A柱上有n个大小不等的盘子,大盘在下,小盘在上。
  2. 要求将所有盘子由A柱搬动到C柱上,每次只能搬动一个盘子,搬动过程中可以借助任何一根柱子,但
  3. 必须满足大盘在下,小盘在上的条件。打印出搬动的步骤。
  4. */
  5. #include <iostream>
  6. using namespace std;
  7. void move(char,char);
  8. void hanoi(int,char,char,char);
  9. int main(){
  10. int n;
  11. cout<<"输入盘子数:"<<endl;
  12. cin>>n;
  13. hanoi(n,'A','B','C');
  14. cout<<endl;
  15. return 0;
  16. }
  17. void hanoi(int n,char source,char temp,char target){
  18. if(n==1)  move(source,target);
  19. else{
  20. hanoi(n-1,source,target,temp); //将n-1个盘子搬到中间柱
  21. move (source,target); //将最后一个盘子搬到目标柱
  22. hanoi(n-1,temp,source,target); //将n-1个盘子搬到目标柱
  23. }
  24. }
  25. void move(char source,char target){
  26. cout<<source<<"->"<<target<<'t';
  27. }