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

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

竟然忘记了汉诺塔递归了。。。有3个柱子,有n个盘子在A柱子,需要通过B把n个盘子放到C的柱子上。盘子都是从上到下半径依次增大的

 

hanoi(int n,char A,char B,char C)//通过B把A上的n个盘放到C上{    if(n==1) move(1,A,C);//如果是编号为1的盘就直接放    else    {        hanoi(n-1,A,C,B);//通过C把A上的前n-1个盘子放到B上        move(n,A,C);//把第n号盘子放到C上        hanoi(n-1,B,A,C);//然后再把B上的n-1个盘子放到C上    }}

  

 

完整代码:

 

 

#include 
//第一个塔为初始塔,中间的塔为借用塔,最后一个塔为目标塔int i=1;//记录步数void move(int n,char from,char to) //将编号为n的盘子由from移动到to{printf("第%d步:将%d号盘子%c---->%c\n",i++,n,from,to);}void hanoi(int n,char from,char denpend_on,char to)//将n个盘子由初始塔移动到目标塔(利用借用塔){ if (n==1) move(1,from,to);//只有一个盘子是直接将初塔上的盘子移动到目的地 else { hanoi(n-1,from,to,denpend_on);//先将初始塔的前n-1个盘子借助目的塔移动到借用塔上 move(n,from,to); //将剩下的一个盘子移动到目的塔上 hanoi(n-1,denpend_on,from,to);//最后将借用塔上的n-1个盘子移动到目的塔上 }}void main(){ printf("请输入盘子的个数:\n"); int n; scanf("%d",&n); char x='A',y='B',z='C'; printf("盘子移动情况如下:\n"); hanoi(n,x,y,z);}

  

转载地址:http://xpyao.baihongyu.com/

你可能感兴趣的文章
负载均衡—nginx https服务
查看>>
jackjson解决 Unrecognized field
查看>>
百度ueditor 1.4.3 jsp开发版简单配置及图片上传
查看>>
git使用
查看>>
日志分析-2.发送windows日志到一个远程的rsyslog服务器上
查看>>
分析现在互联网上信息可信性的现状
查看>>
centos 安装yum网络源
查看>>
Android JSBridge的原理与实现
查看>>
命令行记录
查看>>
如何使用jquery获取 (滚动条)距离(页面底部)的距离
查看>>
移动前端开发之viewport的深入理解
查看>>
Javascript window.open使用POST传递值
查看>>
2016年2月18日:Spring Retry
查看>>
基于Spring Boot + Dubbo的全链路日志追踪(一)
查看>>
002 centos 安装hadoop
查看>>
puppet on windows
查看>>
岁末说安全 详解U-Mail邮件服务器多重防护盾
查看>>
数组顺序存储二叉树
查看>>
excel導出框架
查看>>
maven 编译 run test的时候控制台输出乱码信息
查看>>