java算法1——河内之塔

2023-05-16

  河内之塔游戏规则:有A、B、C三个石棒,A上有若干个从小到大依次排列的盘子,盘子的数量为n,现在要求,将A棒上的盘子依次移动到C棒上,并且移动过程中要保证小盘在大盘之上。
  (1)当n=1时:将盘子直接从A移动到C;( 注:图片来源于https://www.cnblogs.com/li-peng/p/3303349.html,图片有修改,原作者使用的是c和c++,感兴趣的读者可以去看一下)

图一

  (2)当n=2时:将小盘子1从A移动到B;
          将大盘子2从A移动到C;
          将小盘子1从B移动到C;
在这里插入图片描述

图二

  (3)当n=3时:将盘子1从A移动到C;
          将盘子2从A移动到B;
          将盘子1从C移动到B;
          将盘子3从A移动到C;
          将盘子1从B移动到A;
          将盘子2从B移动到C;
          将盘子1从A移动到C;
在这里插入图片描述

图三
   解题思路:当n=3时:(1)将1和2盘子看成一个盘子,利用图二就可完成盘子从A移动到C的移动操作;

           (2)A移动到C的过程中,先是把盘子1和2是看成一个盘子移动到B棒上的。那么就来看看这一部分怎么移动到B盘上的,将A和B棒位置互换,并且将A,B棒位置以及名字互换,再将更换后的B棒和C棒位置互换,那么通过图五,A棒便可以完成盘子1和2移动到B棒上。(递归思想)

在这里插入图片描述

图四 第(1)步移动

在这里插入图片描述

图五

  当n=n(多余三个的)时候,重复的将盘子分为最下边一个盘子分为第一部分,将剩下的所有上边的盘子分成第二部分,多次重复图二操作,便可以完成盘子从A移动到C的操作;

  代码和打印结果如下:

import java.util.Scanner;

public class Towers_of_Hanoi {
	
	public static void main(String[] args) {
		int n;
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入盘数:");
		if (scanner.hasNextInt()) {
            n = scanner.nextInt();
            data(n,"A","B","C");
        }else {
        	System.out.println("请输入正确数字");
        }
	}
	
	
	public static void data(int n,String A,String B,String C) {
		if(n==1) {
			System.out.println(A+">>"+C);
		}else {
			data(n-1,A,C,B);//第一步,将A上方所有的盘子,从A移动到B
			System.out.println(A+">>"+C);//第二步将A最后一个盘子,从A移动到C
			data(n-1,B,A,C);//第三步将B所有盘子,从B移动到C
		}
			
	}
}

打印结果1:
在这里插入图片描述

打印结果2:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java算法1——河内之塔 的相关文章

随机推荐

  • Mybatis-Plus-Generator源码解读

    首先 xff0c 从AutoGenerator类的execute方法进入 生成代码 public void execute logger debug 34 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • Xfce+VNC+XRDP实现远程桌面连接的方法

    本文介绍在CentOS 7 3下安装Xfce 43 VNC 43 XRDP实现远程桌面连接的方法 xff0c 使用root用户进行操作 1 配置前准备 升级更新 xff08 可选 xff09 更新资源 xff0c 避免资源过旧出现问题 yu
  • 视频超分——02 VESPCN

    Real Time Video Super Resolution with Spatio Temporal Networks and Motion Compensation 参考资料 xff1a 论文内容 xff1a https blog
  • 002 在树莓派zero w上安装 VNC

    前言 有时直接在树莓派上工作并不方便 也许您想通过远程控制从另一台设备进行处理 VNC 是一个图形桌面共享系统 xff0c 允许您从另一台计算机或移动设备 xff08 运行 VNC 查看器 xff09 远程控制一台计算机 xff08 运行
  • SRFBN阅读笔记

    文章出自cvpr2019 全称 xff1a Feedback Network for Image Super ResolutionFB层的两个输入 xff08 规定F out 1是F in 0 xff09 先做concatenate xff
  • 升级cmake到3.6.2

    CMake 到 3 6 2 https cmake org download CentOS 7 span class token punctuation span root 64 thrift1 span class token punct
  • dpkg强制卸载

    dpkg的一个强制卸载的方法 安mysql的时候因为玄学国家防火墙 xff0c 安到一般被阻断了 xff0c 再卸的时候各种依赖不对 xff0c dpkg r P怎么都卸不掉 xff0c 提示有依赖卸载包的东西 xff0c 找到一个 for
  • Python打包(构建)、分发、安装 简要介绍

    1 为什么要打包分发 平时我们习惯了使用pip安装一些package xff0c 但是如果想自己写一些package供别人使用 xff0c 就需要打包分发 打包 xff08 构建 xff09 xff1a 将自己的源代码打包封装成packag
  • 树莓派3b安装nginx 2018.12.31

    sudo apt get update sudo apt get upgrade sudo apt get remove apache2 据说如果系统自带apache2的话 xff0c apache2会占用80端口 xff0c 导致影响ng
  • 双系统:解决ubuntu18.04系统开机黑屏的问题(ubuntu20.04,ubuntu16.04适用)

    安装ubuntu双系统 xff1a 点击第三个U盘安装方式 xff1a 安装ubuntu xff1a 会出现黑屏现象 xff1a 重启电脑 xff08 一般是长按开机键 xff09 xff0c 在下面这个界面按e xff0c 注意不是回车是
  • WSL 下 Ubuntu 20.04 中文显示设置

    环境 系统 xff1a Windows 10 Pro 64 子系统 xff1a Ubuntu 20 04 LTS 查看本地语言包 xff0c 安装语言包 locale a 查看现有语言包 span class token function
  • linux网络测试工具

    工具 iperf 网络性能测试工具 测试组播 xff1a iperf s u B lt 组播地址 gt i lt 结果显示间隔 gt iperf s u B 231 1 2 1 i 1 iperf c lt 组播地址 gt u T lt T
  • python检查一个变量的类型

    1 只想知道某个变量的数据类型 xff1a python中判断一个变量的数据类型可以用 type 变量名 函数 xff1a gt gt gt rectangle 61 200 50 gt gt gt type rectangle lt cl
  • Windows10中wsl2安装kali子系统加GUI

    环境 win10专业工作站 操作 确定后重启 配置先决条件 In Windows Powershell 管理员 Enable WindowsOptionalFeature Online FeatureName Microsoft Windo
  • vue项目中使用ramda库

    先安装ramda库 npm i ramda 在main js中引入 import as R from 39 ramda 39 Vue prototype R 61 R
  • Get请求体中转义字符及URI编码

    参考 xff1a 转义字符及URI编码 weixin 30678349的博客 CSDN博客 获取职级类型的列表 getRankTypeList var sql 61 96 select COMMENTS from user col comm
  • 使用jar命令替换jar|war包中指定文件

    一 jar命令用法 span class token operator span c 创建新的归档文件 span class token operator span t 列出归档目录和文件 span class token operator
  • Windows编程UTF-8,UTF-16,ASCII,宽字节,窄字节等编码问题汇总

    宽字节输出乱码问题 span class token macro property span class token directive hash span span class token expression Unicode 字符集 s
  • 前端基础--NPM包管理工具

    NPM包管理工具 关键字 xff1a NPM包资源管理器 pdf 提示 xff1a 经常使用的命令 xff0c 一些生产常见问题记录 文章目录 NPM包管理工具一 常用命令 一 常用命令 span class token number 1
  • java算法1——河内之塔

    河内之塔游戏规则 xff1a 有A B C三个石棒 xff0c A上有若干个从小到大依次排列的盘子 xff0c 盘子的数量为n xff0c 现在要求 xff0c 将A棒上的盘子依次移动到C棒上 xff0c 并且移动过程中要保证小盘在大盘之上