汉罗塔汉洛塔c++,看不懂ni打我

news2025/7/12 7:45:34

汉罗塔汉洛塔c++,看不懂ni打我


大哥大姐手下留情 别打我!!!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GC9f81Hm-1669391569678)(C:\Users\ASUS\Desktop\汉罗塔 .在这里插入图片描述

Input
		第一行为一个正整数n

Output
		若干行,表示将n个金片从A搬到C的全过程。
		格式见样例。

		Sample Input 1
			1:A==>C

		Sample Output 3
            1:A==>C
            2:A==>B
            1:C==>B
            3:A==>C
            1:B==>A
            2:B==>C
            1:A==>C   

Hint
		n ≤ 10

总之就是 (1. 2. 3.对应下面c++代码执行步骤)

先复杂问题简单化,n层无法解决就把n先放着不管,解决n-1层
要解决n-1层,就把n-1层先放着不管…然后把1层解决了,然后解决2层…
然后解决问题。ABC(起始柱,备用柱,目标柱)随着递归调用,三个柱子的起始属性会发生变化。

1.n层先不动,等待n-1层全部移动到备用柱上 (看了下面再体会这一句)
2.然后将n层移动到目标柱上
3.此时n-1层还在备用柱上 需要把备用柱上的n-1柱子全部移动到 目标柱
要把n-1层移动到目标柱上

1.n-1层不要动,等待n-2层全部移动到备用柱上 (体会一下这里,柱子不一样喔)
2.然后将n-1移动到目标柱上
3.此时n-2还在备用柱上 需要把备用柱上的n-2个柱子全部移动到 目标柱上



.

要把2层移动到目标柱上
1.第2层不要动,将第一层全部移动到备用柱上
2.然后将第2层移动到目标柱上
3.将第一层从备用柱上 移动到目标柱上,结束

*****注意体会:每次递归调用的时候 A B C 三个柱子属性(起始柱 备用柱 目标柱) 一直在变换换 *****
看代码


#include<cstdio>
#include<iostream>
#include<string>
using namespace std;

void han1(int n, string A, string B, string C) {
    // 只有一层的时候直接从 a==>c
	if (n == 1) {
		cout<<n<<":" << A << "==>" << C << endl;
	}else {// 有两层以上的时候
        /*1. 除底层 之外的 所有层数(n-1) 继续进行递归,直到n-1=1时候该函数递归结束
        	 递归结束后n-1层会全部移动到 中间柱B上
        */
		han1(n - 1, A, C, B);

		/*2. 经过1.操作后 此时n-1个元素已经全部移动到b柱上 
			此时A柱上只有最底层元素n 我们直接把他移动到 c柱子上
		*/ 
		cout<<n<<":" << A << "==>" << C << endl;
        
		/*3.经过1.和2.操作 此时n-1层已经移动到b柱中,n移动到A柱上
			此时的需要把 b柱上的 n-1个元素全部移动到c柱中完成移动
			所以再次递归调用
		*/ 
		han1(n - 1, B, A, C);
	}
}
int main() {
    // n表示有几层汉罗塔
	int n;
	cin>>n;
    // 调用递归函数
	han1(n, "A","B","C");
	system("pause");
	return 0;
}

我是傻逼

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

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

相关文章

vue3新一代状态管理器 — pinia的学习与使用

目录一、vuex与pinia特性二、使用pinia2.1 安装pinia2.2 项目引入2.3 创建store2.4 使用storegetteraction2.5 修改state1、直接修改2、使用$patch3、使用actions2.6 storeToRefs一、vuex与pinia Pinia 最初是为了探索 Vuex 的下一次迭代会是什么样子&#xff0c;结合了 Vuex 5…

4. 云计算中的存储基础知识

4.1 物理磁盘类型和存储设备类型 虚拟化中的存储架构 物理磁盘类型 - SATA盘 SATA的全称Serial Advanced Technology Attachment&#xff0c;SATA&#xff08;Serial ATA&#xff09;口的硬盘又叫串口硬盘。SATA采用串行连接方式&#xff0c;串行ATA总线使用嵌入式时钟信号&a…

kubernetes组件 Controller manager深刻认知

kubernetes组件 Controller manager深刻认知Controller manager常见的controllerController manager的工作流程informer的内部机制控制器的协同工作原理ReplicaSet controller 是如何被管理的&#xff1f;statefuleset 和deployment controller是如何控制滚动升级的statefulese…

学习基于html和JavaScript的滑动图片拼图验证源码

之前的文章《使用C#中的GDI功能实现图片填充验证方式》中介绍过使用GDI在Winform中实现图片拼图验证的思路&#xff0c;学了html中的canvas使用方式后&#xff0c;也可以照搬思路实现&#xff0c;只不过没有在Winform中方便。但是在网上看了不少基于html和JavaScript的滑动图片…

【数据结构】栈的模拟和使用理解

学习目录栈(Stack)栈的概念栈的使用栈相关的应用场景栈的模拟实现中缀表达式 转 后缀表达式栈(Stack) 栈的概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作. 进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底&a…

关于vba代码运行时错误1004 应用程序定义或对象定义错误问题

一、错误描述 将Excel所有工作表&#xff0c;汇总到一个工作表中&#xff1a; 在thisworkbook中运行如下&#xff1a; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Su…

大数据面试题(五):Hadoop优化核心高频面试题

文章目录 Hadoop优化核心高频面试题 一、Mapreduce 跑的慢的原因&#xff1f; 1、计算机性能 2、I/O 操作优化 二、Mapreduce优化方法 1、数据输入 2、map阶段 3、reduce阶段 4、IO传输 5、数据倾斜问题 6、常用的调优参数 三、HDFS小文件优化方法 1、HDFS小文件…

【MATLAB】常见语法结构和实用操作

目录 语法结构 循环&#xff08;遍历&#xff09;结构 函数结构 画图操作 绘制函数图像 ezplot figure多图绘制 创建多项式 按照系数创建多项式 利用多项式零点创建多项式 解方程组 语法结构 循环&#xff08;遍历&#xff09;结构 与其它编程语言类似&#xff0c;…

常用辅助类

CountDownLatch 应用场景&#xff1a;1.多线程任务汇总。2.多线程任务阻塞住&#xff0c;等待发令枪响&#xff0c;一起执行。 减法计数器 每次有线程调用&#xff0c;数量-1&#xff0c;当计数器归零&#xff0c;countDownLatch.await()就会被唤醒向下执行。 import java.uti…

【代码随想录】二刷-二叉树

二叉树 《代码随想录》 二叉树的遍历方式 深度优先遍历: 前序遍历(递归法、迭代法): 中左右中序遍历(递归法、迭代法): 左中右后序遍历(递归法、迭代法): 左右中 广度优先遍历: 层序遍历(迭代法) 二叉树的定义 struct TreeNode{int val;TreeNode* left;TreeNode* right;TreeN…

无线传感器网络:网络层

文章目录Challenges for RoutingEnergy EfficiencyScalabilityAddressingRobustnessTopologyApplicationRouting MetricsQuality-of-Service (QoS)Minimum HopEnergyMinimum energy consumed per packetMaximum time to network partitionMaximum average energy capacityMaxim…

Java并发-操作系统,进程,线程,并行并发?

我们首先来看看&#xff0c;三者之间的关系&#xff0c;从图中可以看到 操作系统是包含多个进程的容器&#xff1b;而每个进程又是容纳多个线程的容器。什么是进程&#xff1f;官方定义&#xff1a; 进程&#xff08;baiProcess&#xff09;是计算机中的程序关于某数据集合上的…

详解:网络虚拟化卸载加速技术的演进

在传统的应用场景中&#xff0c;服务器资源过剩情况普遍&#xff0c;为了充分利用服务器资源&#xff0c;产生了虚拟化技术。虚拟化技术以牺牲部分效率为代价提升了资源的使用率&#xff0c;将原来需要硬件完成的工作&#xff0c;通过软件模拟的方式&#xff0c;满足多个云租户…

初识Qt Quick

讲讲最近几年Qt的热门技术Quick这一块了。 啥是Qt&#xff1f; 哦&#xff0c;这是一个宣称可以跨任意平台&#xff0c;开发各种场景应用软件的开发框架。从三个维度来讲&#xff0c;就是开发库framework&#xff0c;集成开发平台IDE&#xff0c;以及成熟的开发思维模式。 Q…

CAS:82055-94-5,Azide-PEG-Azide,N3-PEG-N3,叠氮聚乙二醇叠氮试剂供应

1、名称 英文&#xff1a;Azide-PEG-Azide&#xff0c;N3-PEG-N3 中文&#xff1a;叠氮-聚乙二醇-叠氮 2、CAS编号&#xff1a;82055-94-5 3、所属分类&#xff1a;Azide PEG 4、分子量&#xff1a;可定制&#xff0c;叠氮-PEG-叠氮 2000、叠氮peg叠氮 1000、叠氮-聚乙二醇…

org.activiti.bpmn

org.activiti.bpmn目录概述需求&#xff1a;设计思路实现思路分析1.BpmnAutoLayout2.BPMNLayout参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for ch…

Mybatis概述

1 概述 原来是Apache的一个开源项目&#xff0c;叫iBatis, 2010年6月这个项目由 Apache Software Foundation 迁移到了 Google Code&#xff0c;随着开发团队转投Google Code 旗下&#xff0c;从 iBatis3.0正式更名为MyBatis。 MyBatis 是一款优秀的持久层框架&#xff0c;对j…

容器卷挂载的秘密

什么是容器卷 数据卷 &#xff08;Data Volumes &#xff09;是一个可供容器使用的特殊目录&#xff0c;它将主机操作系统目录直接映射进容器&#xff0c;类似于 Linux 中的 mount 行为。 容器挂载原理 containerd创建的容器里的数据存储在下面的目录中 [rootmaster01 httpb…

【C/C++】万字图文详解C语言文件操作 完美装饰课设大作业

目标导航 写在前面 为什么使用文件&#xff1f; 什么是文件&#xff1f; 程序文件 数据文件 认识文件名 文件的打开和关闭 文件指针 文件的打开和关闭 1.以"r"&#xff08;只读&#xff09;的方式打开文件 2.以"w"&#xff08;只写&#xff09;…

Java#24(常见API--2)

目录 一.Rantime Runtime表示当前虚拟机的运行环境 Runtime常用方法 扩展:对象克隆 二.Objects Objects是一个对象工具类,提供了一些操作对象的方法 一.Rantime Runtime表示当前虚拟机的运行环境 Runtime常用方法 方法名 作用 publi…