算法--递归--汉诺塔问题

文章目录

    • 1. 问题分析
    • 2. 面试题

1. 问题分析

在这里插入图片描述
游戏规则:一次只能挪一片;小的只能在大的上面;把所有的从A柱挪到C柱。
递推公式:

  1. 上部 n - 1 个 A 到 B;
  2. 最底下 1 个 A 到 C ;
  3. 上部 n - 1 个 B 到 C;

终止条件:
n = 1 时,A 到 C;

/*** @description: 汉诺塔递归问题* @author: michael ming* @date: 2019/4/7 20:10* @modified by:*/
#include <iostream>
using namespace std;
void hanoi(size_t n, string startP, string middleP, string destP, size_t &counts)
{if(n == 1){cout << startP << " ---> " << destP << endl;counts++;return;}else{hanoi(n-1, startP, destP, middleP, counts);     //n-1个从开始-->中间cout << startP << " ---> " << destP << endl;    //最底下那个开始-->目的地counts++;hanoi(n-1, middleP, startP, destP, counts);     //n-1个从中间-->目的地}
}
int main()
{cout << "请输入汉诺塔层数:";size_t n, steps = 0;   cin >> n;hanoi(n,"a","b","c",steps);cout << "共走了 " << steps << " 步。" << endl;return 0;
}

在这里插入图片描述

2. 面试题

《程序员面试金典》面试题 08.06. 汉诺塔问题

  • 题目

在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制:
(1) 每次只能移动一个盘子;
(2) 盘子只能从柱子顶端滑出移到下一根柱子;
(3) 盘子只能叠在比它大的盘子上。

请编写程序,用栈将所有盘子从第一根柱子移到最后一根柱子。

你需要原地修改栈。

示例1:输入:A = [2, 1, 0], B = [], C = []输出:C = [2, 1, 0]
示例2:输入:A = [1, 0], B = [], C = []输出:C = [1, 0]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/hanota-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  • 解题
class Solution {
public:void hanota(vector<int>& A, vector<int>& B, vector<int>& C) {h(A,B,C,A.size());}void h(vector<int>& A, vector<int>& B, vector<int>& C, int n){if(n == 1){C.push_back(A.back());A.pop_back();return;}h(A,C,B,n-1);C.push_back(A.back());A.pop_back();h(B,A,C,n-1);}
};

在这里插入图片描述

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

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

相关文章

论文浅尝 | 面向跨语言实体对齐的知识图谱与实体描述协同嵌入方法

来源: IJCAI2018链接: https://www.ijcai.org/proceedings/2018/0556.pdf动机近年来&#xff0c;随着多语言知识图谱嵌入(Multilingual KG embedding)的研究&#xff0c;实体的潜在语义表示以及跨语言知识推理等任务均取得一定成效&#xff0c;因此也推动了许多知识驱动的跨语言…

最新阿里聚划算Java 5轮面试题,涵盖GC收集器、多线程锁等

一面 详细的介绍JVM的内存模型结构 JVM最常用的参数配置讲讲 GC垃圾收集算法、GC垃圾收集器有哪些&#xff0c;以及新生代老生代 分别用什么算法 多线程的几种加锁方式详细介绍 实现线程安全的方式&#xff1f;ThreadLocal原理&#xff1f;线程池了解吗说说看&#xff1f;自…

2004-2019十六年热点事件库HistoryHotEventBase项目

HistoryHotEventBase historyhotevent projrct ,which concentrate on the dayily hot event covers the time range from 2004 to 2019, 16 years in total&#xff0c;从2004年至2019年共16年的每日热点事件项目&#xff0c;目标包括构建起从2004年至今共16年的历时热点标题数…

OSI七层模型详解-开放系统互联参考模型详解

原文链接&#xff1a;https://blog.csdn.net/yaopeng_2005/article/details/7064869 OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯&#xff0c;因此其最主要的功能就是帮助不同类型的主机实现数据传输 。 完成中继功能的节点通常称为中继系…

最新天猫Java3轮面试题目:虚拟机+并发锁+Sql防注入+Zookeeper

天猫一面 自我介绍、项目介绍 Spring拦截器、实现了哪些方法&#xff1f;底层原理 AOP如何配置&#xff0c;底层原理、2种动态代理&#xff0c;aop注解实现&#xff0c;xml定义切面 Bean的作用域&#xff0c;单例模式是否线程安全&#xff1f;恶汉模式是否线程安全&#xff…

NLP中的少样本困境问题探究

一只小狐狸带你解锁 炼丹术&NLP 秘籍作者&#xff1a;JayLou娄杰&#xff08;NLP算法工程师&#xff0c;信息抽取方向&#xff09;前言在医疗、金融、法律等领域&#xff0c;高质量的标注数据十分稀缺、昂贵&#xff0c;我们通常面临少样本低资源问题。本文从「文本增强」和…

军事武器知识图谱构建与自动问答项目QAonMilitaryKG

QAonMilitaryKG QAonMilitaryKG&#xff0c;QaSystem based on military knowledge graph that stores in mongodb which is different from the previous one, 基于mongodb存储的军事领域知识图谱问答项目&#xff0c;包括飞行器、太空装备等8大类&#xff0c;100余小类&#…

python--从入门到实践--chapter 9 类

类的定义格式&#xff1a; class Name(Father_class):def __init__(self, para, ...):self.para xdef __init__(self, para, ...):super().__init__(para, ...) #调用父类的构造函数class Car():def __init__(self,make,model,year): #构造函数self.make makeself.model mo…

连载 | 知识图谱发展报告 2018 -- 前言

OpenKG 将开始连载《知识图谱发展报告(2018)》&#xff0c;希望该连载能够让更多的人深入了解知识图谱。欢迎各位读者留言讨论。1. 知识图谱的研究目标与意义 知识图谱&#xff08;Knowledge Graph&#xff09;以结构化的形式描述客观世界中概念、实体及其关系&#xff0c;将互…

网址(url),域名,ip地址,dns,hosts之间的关系

网址&#xff08;url&#xff09;&#xff0c;域名&#xff0c;ip地址&#xff0c;dns&#xff0c;hosts之间的关系 什么是ip&#xff1f; 我们知道&#xff0c;在Internet上有千百万台主机&#xff0c;为了区分这些主机&#xff0c;人们给每台主机都分配了一个专门的地址&…

事理图谱概念辨析及其与风险标签分类结合的应用探讨

以事件为描述核心&#xff0c;以揭示事件之间的演化逻辑关系的事理图谱自提出后&#xff0c;引起了工业界的极大兴趣&#xff0c;在积极探索事理图谱本质、事理图谱构建技术细节的同时&#xff0c;如何找到技术与应用场景之间的结合成为目前广泛讨论的问题。我们团队持续对以上…

一篇文章带你熟悉 TCP/IP 协议(网络协议篇二)

涤生_Woo2017年11月11日阅读 15544关注一篇文章带你熟悉 TCP/IP 协议&#xff08;网络协议篇二&#xff09;同样的&#xff0c;本文篇幅也比较长&#xff0c;先来一张思维导图&#xff0c;带大家过一遍。一图看完本文一、 计算机网络体系结构分层计算机网络体系结构分层计算机网…

PyTorch数据Pipeline标准化代码模板

前言PyTorch作为一款流行深度学习框架其热度大有超越TensorFlow的感觉。根据此前的统计&#xff0c;目前TensorFlow虽然仍然占据着工业界&#xff0c;但PyTorch在视觉和NLP领域的顶级会议上已呈一统之势。这篇文章笔者将和大家聚焦于PyTorch的自定义数据读取pipeline模板和相关…

2019 最全支付宝高级Java现场面试37题

支付宝现场三面面试题目,文末有福利&#xff1a;阿里经典面试88题目答案 01 支付宝一面 介绍一下自己。 项目参与的核心设计有哪些 ArrayList和LinkedList底层 HashMap及线程安全的ConcurrentHashMap&#xff0c;以及各自优劣势 Java如何实现线程安全 Synchronized和Lock…

腾讯互娱刘伟 | 知识图谱在运维中的应用

本文转载自公众号&#xff1a;InfoQ。随着业务监控建设不断完善&#xff0c;海量业务故障时产生成百上千条告警&#xff0c;如何智能定位故障根源、实时统计业务影响是现阶段运营面临的一个难题。Google 利用知识图谱优化了其搜索服务以来&#xff0c;知识图谱得到了迅速发展。…

中文人物关系图谱构建与应用项目(人物关系抽取,关系抽取评测)

ChinesePersonRelationGraph ChinesePersonRelationGraph, person relationship extraction based on nlp methods.中文人物关系知识图谱项目,内容包括中文人物关系图谱构建,基于知识库的数据回标,基于远程监督与bootstrapping方法的人物关系抽取,基于知识图谱的知识问答等应用…

2019 最新阿里中间件Java 4轮面试题!60万年薪起步~

Java中间件一面 1.技术一面考察范围&#xff1a; 重点问了Java线程锁&#xff1a;synchronized 和ReentrantLock相关的底层实现 线程池的底层实现以及常见的参数 数据结构基本都问了一遍&#xff1a;链表、队列等 Java内存模型&#xff1a;常问的JVM分代模型&#xff0c;以…

0011【冥想】87天冥想感悟汇总

0011【冥想】87天冥想感悟汇总 2018.1.6 Day1图片发自简书App1.7 Day2图片发自简书App❤️1.8冥想Day3❤️听了谷老师的分享&#xff0c;挺受益的。当我们的心越来越柔软&#xff0c;身体也会越来越柔软&#xff0c;所谓相由心生&#xff0c;冥想的时候&#xff0c;身体也会听从…

这个自然语言处理“工具”,玩得停不下来

今天推荐一个有趣的自然语言处理公众号「AINLP」&#xff0c;关注后玩得根本停不下来&#xff01;AINLP的维护者是我爱自然语言处理&#xff08;52nlp&#xff09;博主&#xff0c;他之前在腾讯从事NLP相关的研发工作&#xff0c;目前在一家创业公司带技术团队。AINLP公众号的定…

观点 | 抛开炒作看知识图谱,为什么现在才爆发?

本文转载自公众号&#xff1a;AI前线。 作者 | George Anadiotis 译者 | 无明 导读&#xff1a;知识图谱究竟是什么&#xff0c;都有哪些围绕它们的炒作&#xff1f;如果你想要像 Airbnb、亚马逊…