【C语言练习】汉诺塔

一、题目

介绍:汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
游戏要求:
1、每次只能移动一个圆盘。
2、圆盘只能放置在比它大的圆盘上。
3、圆盘在新的柱子上也是从上到下、从小到大排列。

二、分析

假设n表示个圆盘个数,三根柱子分别用A,B,C进行表示,n个圆盘最初均放在A柱上,我们要将圆盘全部移到C柱上。
在这里插入图片描述
n = 1时,我们只需要1步就能将圆盘移动到C柱:A —> C
在这里插入图片描述
n = 2时,需要3步才能将圆盘移动到C柱:A —> B、A —> C、B —> C
在这里插入图片描述
n = 3时,需要7步才能将圆盘移动到C柱:A —> C、A —> B、C —> B、A —> C、B —> A、B —> C、A —> C
在这里插入图片描述
对于n个圆盘,我们可以参照3个盘子移动的情况,先将A柱上面的n - 1个圆盘通过C柱移动到B柱,剩下最大的那个圆盘直接移动到C柱,B柱上的圆盘通过A柱再移动到C柱上。其需要移动的次数为2^n-1次或者是n - 1个圆盘移动次数乘以2减1。(递归)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以把问题看成是把大象塞进冰箱:①打开冰箱门;②把大象关进冰箱;③关上冰箱门

三、代码实现

移动轨迹:

#include <stdio.h>void Move(char x, char y)
{printf("%c ——> %c ", x, y);//移动轨迹
}void Hanoi(int n, char A, char B, char C)
{	if(n ==1)Move(A, C);else{	Hanoi(n - 1, A, C, B);//上面n - 1个通过C柱移动到B柱Move(A, C);//底部最大圆盘直接移动到C柱Hanoi(n - 1, B, A, C);//n - 1个圆盘通过A柱移动到C柱}
}int main()
{int n = 0;scanf("%d", &n);Hanoi(n, 'A', 'B', 'C');//n个圆盘从A柱挪到C柱return 0;
}

运行结果:
在这里插入图片描述
移动次数:

#include <stdio.h>int Hanoi(int n)
{if(n == 1)return 1;elsereturn 2 * Hanoi(n - 1) + 1;//移动次数是n - 1个圆盘移动次数乘2减1
}int main()
{int n = 0;scanf("%d", &n);int ret = Hanoi(n);printf("%d", ret);return 0;
}

运行结果:
在这里插入图片描述

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

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

相关文章

随机森林实战:在鸢尾花数据集上与决策树和逻辑斯蒂回归进行对比

前言 集成学习通过组合多个模型的优势&#xff0c;常能获得比单一模型更优的性能&#xff0c;随机森林便是其中的典型代表。它基于 Bagging 思想&#xff0c;通过对样本和特征的双重随机采样&#xff0c;构建多棵决策树并综合其结果&#xff0c;在降低过拟合风险的同时&#xf…

(计算机网络)TCP 三握中第三次 ACK 丢失会发生什么?

在 TCP 的三次握手过程中&#xff0c;如果 第三次 ACK 丢失&#xff0c;TCP 是如何保证连接可靠建立的呢&#xff1f;1️⃣ 场景说明第三次 ACK&#xff1a;客户端发送给服务器的 ACK&#xff0c;确认服务器的 SYN-ACK。假设该 ACK 在网络传输过程中丢失。2️⃣ 客户端状态客户…

容智Report Agent2.0重磅发布!重新定义企业数据分析AI时代

在数据成为生产要素之一的今天&#xff0c;很多企业依然面临这样的困境&#xff1a; 想要一份年度财务分析&#xff0c;财务团队可能要忙半个月甚至一个月&#xff1b;想查一个业务指标&#xff0c;要先找出在哪个系统&#xff0c;再申请权限、写SQL、调报表&#xff0c;折腾半…

高阶数据结构---ST表

hello大家好&#xff0c;今天是2025年8月23日&#xff0c;我要来给大家分享的是一个高阶数据结构---ST表。 一&#xff1a;引入 1.RMQ问题&#xff1a; 对于一个长度为 n 的序列&#xff0c;有 m 次查询操作&#xff0c;每次查询为一个区间 [l&#xff0c;r] 的最大值&#…

docker 安装nacos(vL2.5.0)

查找nacos 的所需的镜像版本 https://hub.docker.com/r/nacos/nacos-server/tags 拉取你所需的版本&#xff08;我们用v2.5.0&#xff09; docker pull nacos/nacos-server:v2.5.0 注意&#xff1a;因为我们需要挂载外配置文件 直接用volume 挂载目录 缺少初始文件报错 我们…

在github上通过dmca数字版权申诉侵权并删除侵权仓库

DMCA是什么&#xff1f; 《数字千年版权法案》&#xff08;DMCA&#xff09;为版权所有者&#xff08;包括软件开发人员&#xff09;创建了一个标准化的流程&#xff0c;要求GitHub删除侵权内容。您可以在美国版权局的官方网站上找到有关DMCA的更多信息。有关GitHub如何处理DM…

AI安全监控与人才需求的时间悖论(对AI安全模型、AI安全人才需求的一些思考)

当监控者与被监控者都是AI时&#xff0c;谁来监控监控者&#xff1f;这个看似简单的问题&#xff0c;却揭示了人工智能安全领域的根本性困境。一、问题的提出&#xff1a;当AI监控AI 随着大语言模型和生成式AI的快速发展&#xff0c;AI系统在元认知层面的能力越来越强&#xff…

AI模型部署 - 大型语言模型(LLM)推理部署中的实际显存评估

目录 第一部分:大型语言模型(LLM)推理显存占用的核心原理 1.1 显存占用的主要构成部分 1.2 影响显存占用的关键因素 1.2.1 模型架构:MoE vs. 稠密模型 1.2.2 上下文长度与并发数 1.2.3 部署方式与推理框架 1.2.4 硬件能力 第二部分:显存占用的精确计算方法 2.1 模…

【大语言模型 16】Transformer三种架构深度对比:选择最适合你的模型架构

【大语言模型 16】Transformer三种架构深度对比&#xff1a;选择最适合你的模型架构 关键词&#xff1a;Transformer架构&#xff0c;Encoder-Only&#xff0c;Decoder-Only&#xff0c;Encoder-Decoder&#xff0c;BERT&#xff0c;GPT&#xff0c;T5&#xff0c;模型选择&…

【LeetCode 热题 100】31. 下一个排列

Problem: 31. 下一个排列 文章目录整体思路完整代码时空复杂度时间复杂度&#xff1a;O(N)空间复杂度&#xff1a;O(1)整体思路 这段代码旨在解决经典的 “下一个排列” (Next Permutation) 问题。问题要求重新排列一个整数数组&#xff0c;使其变为字典序上的下一个更大的排列…

【Linux 进程】进程程序替换

文章目录1.进程替换的六个库函数2.execl1.进程替换的六个库函数 使用 man 3 execl 进行查询&#xff0c;3表示 Linux 中的3号手册&#xff0c;即为库函数&#xff08;例如C标准库中的库函数&#xff0c;printf&#xff0c;malloc&#xff09; man 1: 用户命令&#xff08;在sh…

ReasonRank: Empowering Passage Ranking with Strong Reasoning Ability

主要内容总结 本文提出了一种具有强推理能力的列表式段落重排序模型ReasonRank,旨在解决现有重排序模型在推理密集型场景(如复杂问答、数学问题、代码查询等)中表现不佳的问题,核心原因是这类场景缺乏高质量的推理密集型训练数据。 为解决这一问题,研究团队: 设计了自动…

不卡顿、不掉线!稳定可靠的体育赛事直播系统源码解析

在体育和电竞行业&#xff0c;实时直播系统已经成为平台的标配。无论是 OTT、比分直播网站&#xff0c;还是综合类体育社区&#xff0c;用户对直播体验的要求越来越高&#xff1a;不卡顿、不掉线、实时性强。那么&#xff0c;从技术角度出发&#xff0c;一个稳定可靠的 体育赛事…

三菱FX5U PLC访问字变量的某一位

三菱FX5U PLC气缸控制功能块 三菱FX5U气缸控制功能块(完整ST源代码+示例程序)_三菱fx5u标签气缸报警程序功能块-CSDN博客文章浏览阅读560次,点赞5次,收藏2次。如果机器包含100个气缸,我们只需要修改数组的元素数量就可以了,效率非常的高。待续....博途PLC 面向对象系列之“…

Java大厂面试全真模拟:从Spring Boot到微服务架构实战

Java大厂面试全真模拟&#xff1a;从Spring Boot到微服务架构实战 面试场景&#xff1a;某互联网大厂Java后端岗位&#xff0c;候选人谢飞机&#xff08;水货程序员&#xff09; 第一轮&#xff1a;基础与框架认知 面试官&#xff1a;你好&#xff0c;谢飞机&#xff0c;先简单…

Unity游戏打包——Mac基本环境杂记

1、安装 Homebrew若未安装&#xff0c;在使用 brew 命令时将提示 zsh: command not found: brew安装命令&#xff1a;/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"2、更换终端默认 Shell 为 zsh查看已安装的shell&#…

服务组件体系结构(SCA)全景解析

服务组件体系结构&#xff08;SCA&#xff09;全景解析SCA&#xff08;Service Component Architecture&#xff09;是 SOA 生态中专门用来“把服务拼起来并跑起来”的规范。它通过语言中立、协议可插拔、装配声明式三大能力&#xff0c;把“接口—实现—协议”彻底解耦&#x…

问:单证硕士含金量是否不足?

很多人认为花几万块钱读一个同等学历申硕&#xff0c;含金量并没有那么高&#xff0c;但事实却并非如此。今天我们从证书和学习的两个方面来聊一下同等学历申硕的含金量到底是如何的。一、单证含金量看以下几点&#xff1a;&#xff08;1&#xff09;国家认证与学信网可查 …

0.04% vs 0.1%:精度差一点,逆变器性能差距有多大?

一台光伏逆变器损失的功率可能仅仅源于0.3%的MPPT效率差距。这个足以影响产品竞争力的数字&#xff0c;可能并非算法优劣&#xff0c;而在于测试源头的精度选择&#xff1a;是0.04%还是0.1%&#xff1f;本文通过四大测试场景的量化对比&#xff0c;揭示不同的测试精度如何影响产…

Docker Hub 镜像一键同步至阿里云 ACR

&#x1f433; Docker Hub 镜像一键同步至阿里云 ACR 本脚本用于 从 Docker Hub 拉取镜像并推送到阿里云容器镜像服务&#xff08;ACR&#xff09;。 它通过 Python 的 docker SDK 封装了完整流程&#xff1a;拉取 → 重命名 → 登录 → 推送&#xff0c;并在控制台实时输出进度…