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

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

问题描述

img_f6fafe7d3a8255171582caabcbde86cd.png

算法复杂度

  • 2的n次方再减1
    n为盘子的个数

算法实现

#include 
#include
/** 汉诺塔问题*/void hanoi(int n,char A, char B, char C){ if(1==n) //如果是一个盘子,直接将盘子从A柱子移到B柱子上 printf("将编号为%d的盘子从柱子%c移到柱子%c\n",n,A,C); else{ hanoi(n-1,A,C,B); //将A上的n-1个盘子借助C移到B printf("将编号为%d的盘子从柱子%c移到柱子%c\n",n,A,C); //直接将A柱子上的第N个盘子移到C柱子上 hanoi(n-1,B,A,C); //将B柱子上的n-1个盘子借助A移到C }}int main(){ //模拟三个柱子 char chA='A'; char chB='B'; char chC='C'; //盘子个数 int n; printf("请输入需要移动盘子的个数:"); scanf("%d",&n); hanoi(n,chA,chB,chC); return 0;}

运行结果

3个盘子

img_85990d1121a819565f49708f75f6e7ac.png

2个盘子

img_14f3a34bfa13b8a9229fdf1fe3e6b3eb.png

1个盘子

img_1df57a56901795434d60c0254eaff166.png

5个盘子

img_adb7d415a96f87277c4d8abe81a9e7f8.png

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

你可能感兴趣的文章
【 D3.js 入门系列 --- 9.3 】 弦图生产
查看>>
Oracle的悲观锁和乐观锁---摘抄
查看>>
laravel使用的模板引擎 blade
查看>>
jvm之 国际酒店 一次报表 load数据死循环导致的FULLGC
查看>>
【Android开发坑系列】如何让Service尽可能存活
查看>>
javascript操作注册表
查看>>
BZOJ 1151 傲娇的人 排序
查看>>
Hierarchy Viewr 配合 adb 命令 查看窗口属性
查看>>
正则表达式
查看>>
专车降价滴滴快车使命终结?
查看>>
Jquery简介选择的
查看>>
android 滚动条
查看>>
Eclipse+Maven创webapp工程
查看>>
电商库存基础篇之一
查看>>
Android第一次打开应用程序,实现向导界面
查看>>
BC 2015在百度之星程序设计大赛 - 预赛(1)(系列转换-二分法答案贪婪)
查看>>
Labview按钮的机械动作
查看>>
Android-打反编译工具的一种方法
查看>>
DuiVision开发教程(15)-DUI文本控制基础类
查看>>
IOS-图片操作集合
查看>>