当前位置: 首页 > news >正文

leetcode:面试题 08.06. 汉诺塔问题

题目链接

        面试题 08.06. 汉诺塔问题

题目描述

题目解析

  1. 当只有一个盘子时:直接从A柱放到C柱即可。
  2. 当有两个盘子时:将A柱第一个盘子先放到B柱,再将A柱第二个盘子放到C柱,最后将B柱上的盘子放到C柱子。
  3. 当有3个盘子时:先A柱上面两个盘子借助C柱放到B柱子,再将A柱上最后一个盘子放入C柱,最后将B柱子上的盘子借助A柱放入C柱。
  4. 当有n个盘子时:先A柱上n-1个盘子借助C柱放到B柱子,再将A柱上最后一个盘子放入C柱,最后将B柱子上的盘子借助A柱放入C柱。

解法1:纯递归

// 方法一:纯递归
// my_hanota:将A柱子中最上面的n个盘子经由B移动到C中;也就是将A中后n个元素经由B移动到C中。
void my_hanota(int n, vector<int>& A, vector<int>& B, vector<int>& C) {if (n == 1){C.push_back(A.back());  A.pop_back();return;}my_hanota(n - 1, A, C, B);C.push_back(A.back());  A.pop_back();my_hanota(n - 1, B, A, C);
}
void hanota(vector<int>& A, vector<int>& B, vector<int>& C) {int n = A.size();my_hanota(n, A, B, C);
}

解法2:体会参数的递归过程

// 方法二:强迫使用一个参数,简单换一种递归思考方式
// m参数用于体验递归过程
// 用m表示最大的盘子在数组中的位置
void my_hanota(int n, int m, vector<int>& A, vector<int>& B, vector<int>& C)
{if (n == 1){C[m] = A[m];return;}my_hanota(n - 1, m + 1, A, C, B);//将A中后n-1个元素经由C放入BC[m] = A[m];my_hanota(n - 1, m + 1, B, A, C);
}
void hanota(vector<int>& A, vector<int>& B, vector<int>& C) {int n = A.size();B.resize(n);C.resize(n);int m = 0;my_hanota(n, 0, A, B, C);
}
http://www.lryc.cn/news/573741.html

相关文章:

  • 【unitrix】 4.1 类型级加一操作(Add1.rs)
  • 大模型应用:如何使用Langchain+Qwen部署一套Rag检索系统
  • 【教程】不同架构(armv7l等)下载Miniconda安装包
  • RA4M2开发IOT(11)----ADC检测电压
  • 如何用AI开发完整的小程序<10>—总结
  • webRTC源码配置和编译 + Vscode Intelligence配置
  • 9大策略深度解析MySQL多表JOIN性能优化
  • Python-break、continue与else语句
  • 实战记录:minapp框架下跨机型接口调用顺序引发的兼容性问题
  • 如何仅用AI开发完整的小程序<6>—让AI对视觉效果进行升级
  • AAudio:Android 低延迟音频处理的核心组件
  • WEB3开启 Hardhat 自动验证有什么意义
  • 【设计模式】策略模式 在java中的应用
  • 排序算法-python实现
  • docker私有仓库部署配置学习
  • 深度解析云计算网络架构:VLAN+OVS+Bonding构建高可靠虚拟化平台
  • LINUX 622 SAMBA
  • Macbook M4芯片 MUMU模拟器安装使用burpsuit抓包教程APP
  • SpringCloudGateway(spel)漏洞复现 Spring + Swagger 接口泄露问题
  • 【DataWhale组队学习】AI办公实践与应用
  • 探索尝试-ai编程-01-使用ai编程处理单文件的特定文本内容筛选
  • 核心概念解析:AI、数据挖掘、机器学习与深度学习的关系
  • 从零理解鱼眼相机的标定与矫正(含 OpenCV 代码与原理讲解)
  • mp.set_start_method(“spawn“)
  • 可理解性输入:洗澡习惯
  • 时序数据库IoTDB的架构、安装启动方法与数据模式总结
  • Linux 服务器运维:磁盘管理与网络配置
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(三十六) -> 配置构建(三)
  • 面试150 加油站
  • 7.4.1_1B树