分治法-汉诺塔问题

问题来源

大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。

思路

汉诺塔问题实质是把移动n个盘子的问题转化为移动n-1个盘,依据该原理,层层递推,即可将原问题转化为解决移动n -2、n -3… … 3、2,直到移动1个盘的操作,而移动一个盘的操作是可以直接完成的。至此任务真正完成了。

当只有一个盘子时,直接将盘子从A柱子移动到C柱子即可
当有多个盘子时,可以将问题划分为三个步骤:
将上面的n-1个盘子从A柱子移动到B柱子(借助C柱子)
将最底下的一个盘子从A柱子移动到C柱子;
将B柱子上的n-1个盘子移动到C柱子(借助A柱子)

代码

package com.algorithm;public class Hanoi {public static void han(int n,char a,char b,char c) {if(n==1) {System.out.println("将盘子从"+a+"移动到"+c);} else {//将上面的n-1个盘子从A柱子移动到B柱子(借助C柱子)han(n-1,a,c,b);//将最底下的一个盘子从A柱子移动到C柱子System.out.println("将盘子从"+a+"移动到"+c);//将上面的n-1个盘子从B柱子移动到C柱子(借助A柱子)han(n-1,b,a,c);}}public static void main(String[] args)  {int n = 4; //盘子数char a = 'A';char b = 'B';char c = 'C';han(n,a,b,c);}
}

输出结果:
将盘子从A移动到B
将盘子从A移动到C
将盘子从B移动到C
将盘子从A移动到B
将盘子从C移动到A
将盘子从C移动到B
将盘子从A移动到B
将盘子从A移动到C
将盘子从B移动到C
将盘子从B移动到A
将盘子从C移动到A
将盘子从B移动到C
将盘子从A移动到B
将盘子从A移动到C
将盘子从B移动到C

问移动次数的计算

n 个圆盘的移动次数等于 f(1)+2f(n-1)
= f(1) + 2
[f(1) + 2f(n-2)]
= f(1) + 2
{f(1) + 2*[f(1) + 2*f(n-3)]}
== 2^n - 1
其实这是一个 首项为 1,公比为 2,的等比数列之和
如果有 64 个圆盘要多少次?
需要移动 18446744073709551615 次,如果一秒移动一次,需要5千多亿年。

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

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

相关文章

【大数据实训】python石油大数据可视化(八)

2014到2020年石油加工产品产量数据处理分析 一、任务描述 石油是工业的命脉。 一直到2020年,我国原油产量基本处于平稳的状态,大部分原油来自国外进口;中国原油加工产量在华东、东北地区占比较大,华南地区相对较少。原油的加工企业…

打破枯燥工作日,用Python统计键盘和鼠标点击次数,钉钉告诉你今天摸鱼了多少次!

1 前言 是否曾想过,在一天的工作中,你到底点击了键盘多少次,或者鼠标点击了多少下? 是否好奇每天工作的时候,自己究竟有多努力? 本文将带你使用 Python,利用 pynput 监听键盘和鼠标事件&…

关于SSL证书常见的那些误区,你“中”了吗

随着数据安全的重要性越来越凸显,使用SSL证书以实现网站HTTPS加密保护及身份的可信认证成为各政企网站的广泛选择。然而很多网站运营者对于SSL证书的理解仍然存在一些误区,为了能让大家对SSL证书有更为清晰的认识,下面小锐就带大家一起来了解…

Django(一)

1.web框架底层 1.1 网络通信 注意:局域网 个人一般写程序,想要让别人访问:阿里云、腾讯云。 去云平台租服务器(含公网IP)程序放在云服务器 先以局域网为例 我的电脑【服务端】 import socket# 1.监听本机的IP和…

drf知识--01

前后端开发模式 在开发Web应用中,有两种应用模式: 前后端混合开发: bbs 项目--renderajax 1、全栈开发--前端html后端都是一个人写 2、前端人员:写空页面,没有模板语法,只要html,c…

运维笔记之centos部署Go-FastDfs

安装Go-FastDfs 当前最新版本为1.4.5,但发布的最新版本为1.4.4 # 下载文件 wget --no-check-certificate https://github.com/sjqzhang/go-fastdfs/releases/download/v1.4.4/fileserver -O fileserver # 赋权限 chmod x fileserver # 运行 ./fileserver server服…

FA2016ASA (MHz范围晶体单元,内置热敏电阻) 汽车

FA2016ASA是爱普生推出的一款内置热敏电阻、频率范围为38.4MHz的晶振,确保数据的准确传输,同时有效避免频谱干扰的出现。可以在-40C to 125C 的温度内稳定工作。在汽车内部空间有限的情况下,FA2016ASA以其小型超薄的外形尺寸2.0 1.6 0.68mm…

职场规划和职业发展

有人说,做任何事情都要有规划,在职场中人要有规划,公司也要有规划。职场上没有人是你生命中的例外,如果你没有规划,那么就说明你根本不知道自己要什么。只有做好规划,才能让你在职场中获得更好的发展。在职…

RocketMQ从入门到精通

1.MQ概述 1.1 RocketMQ简介 RocketMQ 是阿里开源的分布式消息中间件,跟其它中间件相比,RocketMQ 的特点是纯JAVA实现,是一套提供了消息生产,存储,消费全过程API的软件系统。 1.2 MQ用途 限流削峰 MQ可以将系统的超量请…

Java第二十章课堂总结

如果一次只完成一件事情,很容易实现。但现实生活中,很多事情都是同时进行的。Java中为了模拟这种状态,引入了线程机制。简单地说,当程序同时完成多件事情时,就是所谓的多线程。多线程应用相当广泛,使用多线…

【bug日记】如何切换jdk版本,如何解决java和javac版本不一致

背景 今天在安装jenkins后,使用java运行war包的时候,提示jdk1.8版本太低,需要提高版本,所以就需要切换jdk版本 解决 在用户变量中,首先更改了JAVA_HOME的地址为17的目录,发现javac的版本改为17了&#x…

Jmeter的接口测试详细步骤并实现业务闭环

一、首先是了解Jmeter接口测试用到的组件 1、测试计划:Jmeter的起点和容器2、线程组:代表一定的虚拟用户3、取样器:发送请求的最小单元4、逻辑控制器:控制组件的执行顺序5、前置处理器:在请求之前的操作6、后置处理器…

用sqlite制作对局记录管理

1. sqlite简介 sqlite是一款非常轻便小巧的数据库,以C语言开发,已流行了数十年,据说是世界上部署最多的数据库。为什么是部署最多的呢?因为它根本不需要数据库服务器,且可以在任意设备、任意操作系统上部署。因此&…

服务宕机、线上环境内存溢出OOM分析思路

前言 平时工作中,肯定会遇到哪个产品经理突然来找,说服务器又挂了,怎么又用不了啦!类似的紧急情况,遇到这种情况不要慌,我提供以下几点紧急补救思路。 1)重启大法保命 2)确认是否新…

5分钟上手浏览器插件测试——Eolink Apikit

Eolink Apikit 研发管理和自动化测试产品中,提供了多种发起 API 测试的方式: 服务器测试:通过 Eolink Apikit 官方远程服务器发送请求,不需要安装任何插件,但是无法访问本地服务器(localhost)、内网、局域网。插件测试…

Qt中,将一个结构体转为qbytearray后,如何将这个qpqbytearray重新恢复为之前的结构体

在 Qt 中,如果你有一个自定义的结构体,并将其转换为 QByteArray,然后想要将 QByteArray 转换回原始的结构体,你可以使用 Qt 的 QDataStream 类来实现这个转换过程。 首先,假设你有一个自定义的线段结构体如下&#xf…

Git Status 中文乱码解决

中文的文件名,全是乱码 解决: git config --global core.quotepath false

年终汇报这么写,升值加薪必有你!

#01 你这么能干, 老板知道吗? — 打工人最怕什么? 最怕你忙前忙后,干活一大堆,气出一身结节,锅还没少背,最后升职加薪没有你,出国旅游不带你;更怕你日常996&#xf…

基于深度学习的图像分割

摘要 遥感图像分割是利用遥感技术获取的高分辨率图像进行像素级别的分类,将图像中的不同物体或不同地物提取出来的过程。这个过程对于遥感应用具有重要意义,因为它能够提取出地物和地表特征,如河流、道路、建筑、植被、水体等,并且…

同义词替换器降低论文重复率的最新技术动态

大家好,今天来聊聊同义词替换器降低论文重复率的最新技术动态,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 标题:同义词替换器降低论文重复率的最…