博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
汉诺塔问题
阅读量:5231 次
发布时间:2019-06-14

本文共 679 字,大约阅读时间需要 2 分钟。

基本思路


不要试图用脑子跟踪递归的每一步,就是应为脑子跟不过来才用的递归思想


N 个盘子从A 座移到C 座可以分解为以下三个步骤:

  1. AN-1 个盘借助C 座县移到B 座上;
  2. A 座上剩下的一个盘移到C 座上;
  3. N-1 个盘从B 座借助于A 座移到C 座上。

上面第1步与第3步的操作相似,因此可以将上面3个步骤分为两类操作

  • N-1 个盘子从一个座移到另一个座(N>1 )。
  • 1 个盘子从一个座移到另一个座上。

代码如下

#include 
void move(char x,char y)//move函数{ printf("%c--->%c\n",x,y);}//movevoid hanoi(int n,char one,char two, char three)//hanoi函数{//将n个盘借从one座借助two座,移到three座 if(n==1) move(one,three); else { hanoi(n-1,one,three,two); move(one,three); hanoi(n-1,two,one,three); }}//hanoiint main(){ int n; scanf("%d",&n); hanoi(n,'A','B','C'); return 0;}//main

转载于:https://www.cnblogs.com/DismalSnail/p/10531556.html

你可能感兴趣的文章
Linux安装程序Anaconda分析
查看>>
如何在chrome上打开SSL3.0
查看>>
应该是实例化对象的没有对属性赋值时,自动赋值为null,但不是空指针对象引用...
查看>>
从网易与淘宝的font-size思考前端设计稿与工作流
查看>>
原生HttpClient详细使用示例
查看>>
几道面试题
查看>>
搜索引擎-SHODAN
查看>>
webRTC脱坑笔记(二)— webRTC API之MediaStream(getUserMedia)
查看>>
Factory Design Pattern
查看>>
python中贪婪与非贪婪
查看>>
guava API整理
查看>>
Python股票分析系列——基础股票数据操作(一).p3
查看>>
浅谈vue的生命周期
查看>>
[codevs 1017]乘积最大
查看>>
在iOS端如何使用Charles用作http调试
查看>>
ThinkPHP 5.0 控制器-》请求-》数据库
查看>>
记录Centos7搭建ftp服务器以及遇到的各种坑
查看>>
SQLServer 存储过程
查看>>
牛客多校Round 8
查看>>
线程阻塞释放的5种方法
查看>>