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

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

汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作?

首先,我们来分析一下这个问题 。

1 个盘子 A==>C 1次

2 个盘子 A==>B A==>C B==>C 3次
3 个盘子 A==>C A==>B C==>B A==>C B==>A B==>C A==>C 7次在这里插入图片描述
运用递归来解决问题,就很简单,理清楚逻辑,这样就解决了!!!

#define _CRT_SECURE_NO_WARNINGS 1#include
#include
void Move(char pos1, char pos2) //打印过程 { printf("%c-->%c\n", pos1, pos2);}void Hanoi(int n, char pos1, char pos2, char pos3){ if (n == 1) //只有一个盘子 A==>C { Move(pos1, pos3); } else { Hanoi(n - 1, pos1, pos3, pos2); //1通过3放到2 1==>2 Move(pos1, pos3); Hanoi(n - 1, pos2, pos1, pos3); //2通过1放到3 2==>3 }}int main(){ Hanoi(3, 'A', 'B', 'C'); system("pause"); return 0;}

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

你可能感兴趣的文章
Spring入门
查看>>
Idea提示键和热部署配置以及git使用
查看>>
Deepin+Vscode搭建vue.js项目及Git操作
查看>>
基于Spring Security前后端分离式项目解决方案
查看>>
Vue3.0+Vite2.0项目框架搭建(一)
查看>>
Vue3.0+Vite2.0项目框架搭建(二)- 引入axios
查看>>
Vue3.0+Vite2.0项目框架搭建(三)- 引入Element3
查看>>
使用Vue CLI v4.5(+)搭建Vue3.0项目框架搭建
查看>>
Java集合框架
查看>>
线程协作与生产者消费者问题
查看>>
Vue入门
查看>>
非starter方式实现springboot与shiro集成
查看>>
Starter方式实现Springboot与Shiro集成
查看>>
移动端多页面应用(MPA)的开发(一)
查看>>
移动端多页面应用(MPA)的开发(二)
查看>>
移动端多页面应用(MPA)的开发(三)
查看>>
移动端多页面APP(MPA)开发体验
查看>>
基于深度学习知识追踪研究进展(综述)数据集模型方法
查看>>
linux常见命令与FileZilla
查看>>
PostgreSQL和ElasticSearch学习笔记
查看>>