算法-河内塔(Hanoi)

news/2024/11/29 7:49:31/

算法-河内塔(Hanoi)

1、说明

河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市;1883年法国数学家 Edouard Lucas曾提及这个故事,据说创世纪时Benares有一座波罗教塔,是由三支鑽石棒(Pag)所支撑,开始时神在第一根棒上放置64个由上至下依由小 至大排列的金盘(Disc),并命令僧侣将所有的金盘从第一根石棒移至第三根石棒,且搬运过程中遵守大盘子在小盘子之下的原则,若每日仅搬一个盘子,则当 盘子全数搬运完毕之时,此塔将毁损,而也就是世界末日来临之时。

2、C++代码

#include<iostream>
using namespace std;void Hanoi(int n, char A, char B, char C) {if (n == 1) {cout << n << " " << A << " -> " << C << endl;} else {Hanoi(n - 1, A, C, B);cout << n << " " << A << " -> " << C << endl;Hanoi(n - 1, B, A, C);}
}int main() {cout << "Hanoi(2, 'A', 'B', 'C'):" << endl;cout << "------------------------------------" << endl;Hanoi(2, 'A', 'B', 'C');//hanoi(2,a,b,c)//hanoi(1,a,c,b)		//cout 1 a to b//cout 2 a to c//hanoi(1,b,a,c)	//cout 1 b to ccout << "------------------------------------" << endl;cout << "Hanoi(3, 'A', 'B', 'C'):" << endl;cout << "------------------------------------" << endl;Hanoi(3, 'A', 'B', 'C');//hanoi(3,a,b,c)//hanoi(2,a,c,b)//hanoi(1,a,b,c)	//cout 1 a to c//cout 2 a to b//hanoi(1,c,a,b)	//cout 1 c to b//cout 3 a to c//hanoi(2,b,a,c)//hanoi(1,b,c,a)	//cout 1 b to a//cout 2 b to c//hanoi(1,a,b,c)	//cout 1 a to ccout << "------------------------------------" << endl;return 0;
}


http://www.ppmy.cn/news/1141033.html

相关文章

升本政治冲冲冲

1、哲学基本问题是思维和存在的关系问题&#xff0c;或者说是意识和物质的关系问题 2、三大改造的基本完成标志着我国剥削制度被消灭&#xff1b; 三大改造简介 1956年&#xff0c;随着农业、手工业和资本主义工商业社会主义改造的完成&#xff0c;我国实现了生产资料私有制向社…

Dockerfile自定义容器

1、Dockerfile Dockerfile 是用于构建 Docker 镜像的文本文件&#xff0c;其中包含一系列的指令和配置&#xff0c;用于定义镜像的构建过程。通过 Dockerfile&#xff0c;你可以定义镜像的基础操作系统、依赖、环境设置、应用程序等信息&#xff0c;从而实现可复制、自动化的镜…

第七章 正交实验法用例评审bug管理流程

一、正交试验法 利用因果图来设计测试用例时,作为输入条件的原因与输出结果之间的因果关系,有时很难从软件需求规格说明中得到。往往因果关系非常庞大,以至于据此因果图得到的测试用例数目多的惊人,给软件测试带来沉重的负担,为了有效地合理地减少测试的工时与费用,可利…

Android SurfaceFlinger导读(04)理解BufferQueue

该系列文章总纲链接&#xff1a;Android GUI系统之SurfaceFlinger 系列文章目录 说明&#xff1a; 关于导读&#xff1a;导读部分主要是方便初学者理解SurfaceFlinger代码中的机制&#xff0c;为后面分析代码打下一个更好的基础&#xff0c;这样就可以把更多的精力放在surfac…

Java — 堆内存、新生代、老年代 一般设置为多大内存?

置顶 学习专栏&#xff1a;【Java后端面试题】 1.Java面试题—基础知识、面向对象、【容器】、IO & 【设计模式】、泛型 & 异常 & 反射 & 注解、快速排序2.Java面试题—并发基础、【同步 & 互斥】、JUC & 并发容器、【线程池】、异步编程、【Lambda表达…

rails常用小技巧合集(一)

​ 1&#xff1a;helper_method :current_user 这样可以在页面上调用current_user方法 2&#xff1a;include UserHelper 这样可以在controller中调用helper内的方法 3&#xff1a;model中使用路由方法 a> Rails.application.routes.url_helpers.urlhelper方法名 b>inclu…

建议收藏!混迹职场多年总结出的8大技巧!

1. 不要吃“哑巴”亏&#xff1a;不管在什么企业&#xff0c;一定要“会说话”&#xff0c;敢于表达自己&#xff0c;但是又兼顾身边人的感受&#xff0c;考虑好自己的言行将会带来的后果。良好的沟通技巧对于在职场中建立良好的人际关系和解决问题至关重要。学会倾听、表达和理…

21.6 CSS 弹性布局

1. 弹性盒子 CSS弹性盒子(Flexbox)是一种布局模型, 用于创建灵活的, 自适应的网页布局. 它的目的是在不同屏幕尺寸和设备上实现一致的布局效果.引入弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的子元素进行排列, 对齐和分配空白空间.弹性容器通过设置display…