三柱汉诺塔

题目描述

汉诺塔是约19世纪末,在欧州的商店中出售一种智力玩具。它的结构如下图所示:
 


在一个平板上立有三根铁针,分别记为A, B, C。开始时,铁针 A 上依次叠放着从大到小 n 个圆盘,游戏的目标就是将 A 上的 n 个圆盘全部转移到 C 上,要求每次只能移动某根铁针最上层一个圆盘,圆盘不得放在这三根铁针以外的任何地方,而且永远只能将小的圆盘叠放在大的圆盘之上。

例如,下面就是示例输出中(n = 3)移动方案的图示:

这是一个著名的问题,几乎所有的教材上都有这个问题。由于条件是一次只能移动一个盘,且不允许大盘放在小盘上面,所以 64 个盘的移动次数是:
18,446,744,073,709,551,615
这是一个天文数字,若每一微秒可能做一次移动,那么也需要几乎一百万年。我们仅能找出问题的解决方法并解决较小 n 值时的汉诺塔,但很难用计算机解决64层的汉诺塔。

关于输入

输入数据只有一个正整数 n (n <= 16) , 表示开始时铁针 A 上的圆盘数

关于输出

要求输出步数最少的搬动方案,方案是由若干个步骤构成的,输出的每行就表示一个移动步骤,例如,“A->B”就表示把铁针 A 最上层的一个圆盘移动到 B 上。

代码实现
#include <iostream>
using namespace std;void move(char a,char b){cout<<"盘子从"<<a<<"移动到"<<b<<endl;
}void f(int n,char a,char b,char c){if(n==1){move(a,c);count++;return;}else{f(n-1,a,c,b);move(a,c);count++;f(n-1,b,a,c);}
}int main() {int n; cin>>n;f(n,'A','B','C');return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/159070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vivado调试核ILA使用技巧

ILA&#xff08;Integrated Logic Analyzer&#xff09;IP Core 是 vivado 的调试核&#xff0c;具体如何创建、调用就不详说了。这里主要记录一个 ILA 的使用技巧&#xff0c;可以大大提高调试效率。 在 Program Device 后&#xff0c;如果添加了 ILA 核&#xff0c;则会出现以…

在有springSecurity或者若依项目中获取当前系统登录的用户信息

方法一&#xff08;springSecurity自带的&#xff09; AuthenticationPrincipal 是 Spring Security 框架中的一个注解&#xff0c;用于获取当前已认证用户的 principal&#xff08;即用户身份信息&#xff09;。 方法二&#xff08;若依项目自带的&#xff09; &#xff08;1…

如何有效解决UDP协议传输问题实现快速安全的文件传输

随着互联网技术的不断发展&#xff0c;UDP协议作为一种快速、简单的传输协议被广泛应用于文件传输领域。然而&#xff0c;UDP协议传输过程中也存在着一些问题&#xff0c;如传输速度不稳定、数据丢失等&#xff0c;这些问题会影响到文件传输的效率和安全性。本文将介绍UDP协议传…

模拟实现auto_ptr

template<class T>class auto_ptr {public:auto_ptr(const T* ptr):_ptr(ptr){}//管理权转移&#xff0c;会产生悬挂指针问题。auto_ptr(auto_ptr<T>& ap):_ptr(ap._ptr){ap._ptr nullptr;}~auto_ptr(){if (_ptr){delete _ptr;}}T& operator*(){return *_…

windows 查看防火墙设置命令使用方法

点击键盘上windows键&#xff0c;输入cmd&#xff0c;选择以管理员身份运行 输入下面命令查看使用说明 netsh advfirewall firewall add rule ? 发现显示不全&#xff0c;不方便看 可以输入下面命令&#xff0c;生成文件&#xff0c;方便查看 netsh advfirewall firewall ad…

CTRL C V

H-3-Y8TVVE9KN4-RM8LDMMJR2-LU7AYSZM29-JU56GRJWHC

webshell之无扩展免杀

1.php加密 这里是利用phpjiami网站进行加密&#xff0c;进而达到加密效果 加密前&#xff1a; 查杀效果 可以看到这里D某和某狗都查杀 里用php加密后效果 查杀效果 可以看到这里只有D某会显示加密脚本&#xff0c;而某狗直接绕过 2.dezend加密 可以看到dezend加密的特征还是…

java 中int与Integer的区别

java 中int与Integer的区别 在Java中&#xff0c; int 是一种基本数据类型&#xff0c;而 Integer 是一个包装类&#xff08;Wrapper Class&#xff09;&#xff0c;用于将 int 封装为对象。下面是 int 和 Integer 之间的一些区别&#xff1a; 1. 数据类型&#xff1a; int 是…

【开源】基于Vue.js的康复中心管理系统

项目编号&#xff1a; S 056 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S056&#xff0c;文末获取源码。} 项目编号&#xff1a;S056&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 普通用户模块2.2 护工模块2.3 管理员…

leecode |美化数组的最小删除个数

给你一个下标从 0 开始的整数数组 nums &#xff0c;如果满足下述条件&#xff0c;则认为数组 nums 是一个 美丽数组 &#xff1a; nums.length 为偶数 对所有满足 i % 2 0 的下标 i &#xff0c;nums[i] ! nums[i 1] 均成立 注意&#xff0c;空数组同样认为是美丽数组。 你可…

不存在类型变量 A, T 的实例,使 Collector<T, A, List<T>> 符合 Supplier<R>

报错信息 原因: 不存在类型变量 A, T 的实例&#xff0c;使 Collector<T, A, List<\T>> 符合 Supplier<\R> 来源 测试Stream流的map方法&#xff0c;做算法习惯基本类型定义数组。 map方法:Stream API的一部分。允许以一种声明式的方式处理数据&#xff0c…

2 Advanced Learning Algorithms

文章目录 Week1Neurons and brainNeural network layerForward propagationBuild a netural network ------codeAGIMatrix multiplication ------code Week2Tensorflow--- training detailsactivation functionsMultclass and SoftmaxClassification with multiple outputsAdam…

《算法通关村——幂运算问题解析》

《算法通关村——幂运算问题解析》 2 的幂 给你一个整数 n&#xff0c;请你判断该整数是否是 2 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果存在一个整数 x 使得 n 2x &#xff0c;则认为 n 是 2 的幂次方。 示例 1&#xff1…

网站被攻击了怎么办,有什么办法防御攻击?

近年来&#xff0c;随着互联网发展&#xff0c;出现了各种各样的网站&#xff0c;web应用&#xff0c;网络极大方便了人们的生活&#xff0c;改变了人们生活方式。而随着网络的发展普及&#xff0c;网络安全问题也困扰着用户。 许多人都曾有过这样经历&#xff0c;网站上线后&…

【项目管理】甘特图(1)——认识甘特图

哈喽&#xff0c;大家好&#xff0c;我是雷工&#xff01; 今天学习下甘特图的绘制&#xff0c;以下为学习笔记。 一、什么是甘特图 甘特图是可以直观展示项目进展随时间走势和联系的条状图。是一种常见的项目管理工具。 项目的时间用横轴表示&#xff0c;项目的进度用纵轴表…

基于Java的图书馆管理系统设计与实现【附源码】

摘 要 随着社会的发展&#xff0c;人类对知识的需求也在不断地增长。在这种形式下&#xff0c;书籍就逐渐成为获得知识的主要途径。因此图书馆就自然而然地在人们的生活中占据了一定的位置。如何科学地管理图书不但关系到读者借阅图书的方便程度&#xff0c;也关系到图书馆的发…

cmd 连接远程mysql

cmd 连接远程mysql mysql -h <hostname/IP> -P <port> -u <username> -p

灾备建设中,跨主机集群恢复技术应用

在介绍跨主机集群恢复之前&#xff0c;要了解到虚拟化主机集群是什么&#xff1f; 虚拟化主机集群是一种把一组主机组合起来形成一个整体&#xff0c;向用户提供资源方式&#xff08;计算存储、存储资源、网络资源&#xff09;的技术。 虚拟化集群具有以下特性&#xff1a; …

设计模式-14-迭代器模式

经典的设计模式有23种&#xff0c;但是常用的设计模式一般情况下不会到一半&#xff0c;我们就针对一些常用的设计模式进行一些详细的讲解和分析&#xff0c;方便大家更加容易理解和使用设计模式。 1-原理和实现 迭代器模式&#xff08;Iterator Design Pattern&#xff09;&a…

XTU OJ 1170 学习笔记

ICPC 题目描述 ACM/ICPC比赛涉及的知识点非常多&#xff0c;一个队伍三个人需要能够互补。一个队伍某个知识点的高度是三个人中水平最高的那个人决定。现在给你三个人的每个知识点的水平情况&#xff0c;请计算一下这个队伍的水平。 输入 存在多个样例。每个样例的第一行是…