汉诺塔问题

简介: 汉诺塔问题

汉诺塔背景
在印度有这样一个古老的传说,相传大梵天在创造世界的时候,做了三根金刚石柱,在其中一根柱子上从上而下叠着64片黄金圆盘,于是大梵天就要求婆罗门按圆盘的大小重新摆在另外一根柱子上

要求:一次只能移动一根柱子,并且在移动的过程中,也要保持大盘在小盘的下面

image-20220423122213504

汉诺塔思路
首先,假设只有一个盘子,那么直接从A到C即可

当有两个盘子的时候就将上面的较小的盘子先挪到B,再将较大的盘子挪到C上,最后将B

上的较小的盘子放到C上即可

那么,当有3个及以上盘子的时候,就应该有一种整体递归的思维,递归的核心就是大事化小,总结出重复的步骤,找出规律

由于要保证最后大盘子要在小盘子的下面,所以可以将所有盘子看做两个部分,分为最下面最大的盘子和上面剩下的盘子这两部分,可以先将剩下的盘子这个整体从A经过C的中转,再放到B上面。接着再处理最大的盘子,直接放到C,最后再处理剩下的盘子这个整体,可以将他们从B先放到A上中转,再放到C即可

/**

  • hanoi中参数解释:
  • pos1是指盘子的起始位置
  • pos2是指盘子的中转位置
  • pos3是指盘子的终点位置

*/

public static void move(char pos1, char pos2) {  //进行打印移动的过程
    System.out.print(pos1 + "->" + pos2 + " ");
}

public static void hanoi(int n, char pos1, char pos2, char pos3) {
    if (n == 1) {
        move(pos1, pos2);//当盘子为1的时候直接从A移到C
    } else {
        hanoi(n - 1, pos1, pos3, pos2);
        move(pos1, pos3);
        hanoi(n - 1, pos2, pos1, pos3);
    }
}

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    while (scanner.hasNext()) {
        int n = scanner.nextInt();
        hanoi(n, 'A', 'B', 'C');
        System.out.println();
    }
}

复制代码
以上就是关于汉诺塔问题的求解,主要就要理解其中的递归实现 最后,欢迎大家点赞收藏关注,感谢大家的支持!

目录
相关文章
|
存储 Java Android开发
Android系统升级的机制概要
Android系统升级的机制概要
400 0
基于DSP的数字滤波器设计
基于DSP的数字滤波器设计
408 4
|
11月前
|
安全 Android开发 iOS开发
深入探讨Android与iOS操作系统的差异性
本文旨在通过对比分析Android和iOS两大主流移动操作系统,揭示它们在设计理念、用户体验、安全性、应用生态及系统更新等方面的根本差异。不同于传统的功能列表式摘要,本摘要强调了两大系统背后的哲学思想及其对用户日常使用的实际影响,为读者提供了一个宏观且深入的视角来理解这两种操作系统的独特之处。
|
10月前
|
数据采集 人工智能 安全
代理IP与人工智能的融合发展
在科技飞速发展的今天,代理IP与人工智能(AI)正以前所未有的速度融合发展,为网络生活带来巨大变化。代理IP通过隐藏真实IP、绕过网络限制、提高访问速度和增强安全性,为AI系统提供了高效的数据访问方式。AI则通过模拟和扩展人的智能,广泛应用于医疗、金融、交通等领域,提高生产效率和生活质量。两者结合,不仅提升了数据采集、处理和模型训练的效率,还为未来创新和发展带来了无限可能。
214 0
|
搜索推荐 物联网 智能硬件
智能穿戴设备的应用场景
智能穿戴设备的应用场景广泛且多样化,它们不仅提升了日常生活的便利性,还融入了健康管理和科技娱乐等多个方面。以下是一些具体的智能穿戴设备应用场景:
|
SQL JSON Apache
Apache Doris 2.1.5 版本正式发布
在湖仓一体、多表物化视图、半结构化数据分析等方面进行了全面更新及改进,同时在倒排索引、查询优化器、查询引擎、存储管理等 10 余方向上完成了若干问题修复
253 8
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的豆瓣电影数据分析可视化系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的豆瓣电影数据分析可视化系统附带文章源码部署视频讲解等
191 0
|
机器学习/深度学习 人工智能 算法
秒懂算法 | 莫队算法
本篇介绍了莫队算法的几何意义、基本莫队、带修改莫队以及树上莫队的相关内容。
910 1
秒懂算法 | 莫队算法
|
存储 并行计算 关系型数据库
12306的西天取经路 - 春节抢票与PostgreSQL数据库设计思考
标签 PostgreSQL , 12306 , 春节 , 一票难求 , 门禁广告 , 数组 , 范围类型 , 抢购 , 排他约束 , 大盘分析 , 广告查询 , 火车票
27842 0
|
运维 安全
经典“科技蓝”LOGO设计,你也可以拥有!
经典“科技蓝”LOGO设计,你也可以拥有!
1343 0
经典“科技蓝”LOGO设计,你也可以拥有!