汉诺塔问题

python—汉诺塔问题及受限的汉诺塔问题 2025-2-13。 阅读详情

/**
*汉诺塔问题(java实现)

*作为参数传递给函数的栓名为“start”,“middle”,“end”。
*一开始提示用户并输入盘子数n然后调用递归函数hanoi一求出将n
*个盘子以 “start”栓移到“end”的移动步骤。整个算法学
*要2*2*2….2*2(n个)—1次移动。对于10个盘子的情况,次游戏需
*1023次移动。在测试的例子中,n=3,移动步骤是2*2*2-1=7.
*/
import java.util.Scanner;
public class Hanoi {
    static int times=0;
    static void hanoi(int n, String startpeg, String middlepeg, String endpeg) {
  times++;
        if (n == 1)//只有一个环时
            System.out.println("["+times+"] move " + startpeg + " to " + endpeg);
        else {//大于1个环时
   //将上面n-1个环从"start"移动到"middle"
            hanoi(n - 1, startpeg, endpeg, middlepeg);
   //将最下面的环从"start"移动到"end"
            System.out.println("["+times+"] move " + startpeg + " to " + endpeg);
   //将上面n-1个环从"middle"移动到"end"
            hanoi(n - 1, middlepeg, startpeg, endpeg);
        }
    }

    public static void main(String[] args) {
        String startpeg = "start";
        String middlepeg = "middle";
        String endpeg = "end";
       
        Scanner scanner=new Scanner(System.in);
  System.out.println("请输入一个正整数(环的数目)");
  int n=scanner.nextInt();
  while(n!=0){
    System.out.println("The solution for n = " + n);
    //用于计算执行时间
    long s=System.currentTimeMillis();
          hanoi(n, startpeg, middlepeg, endpeg);
    long e=System.currentTimeMillis();
          System.out.println("执行时间 :" + (e-s)+"毫秒");
    times=0;
          System.out.println("提示:输入0退出计算,继续的话请输入一个正整数(环的数目)");
    n=scanner.nextInt();
  }
    }
}
 

Java实现汉诺塔问题的递归解决方案 本文还有配套的精品资源,点击获取 简介:汉诺塔问题是一个经典的递归算法问题,要求将圆盘从一根柱子按照规则移动到另一根柱子。Java编程语言可以用来实现这一问题的解决方案,利用递归函数将问题分解为更小的子问题,并通过基本情况结束递归。本文提供了一个Java代码示例,演示了如何通过递归方法实现汉诺塔问题的求解过程。代码中详细展示了移动圆盘的步骤,并可以通过改变圆盘数量来模拟不同... 阅读详情

相关推荐

简单的JAVA汉诺塔游戏源代码

这是一个简单的java汉诺塔游戏源代码,它适合与java初学者参考使用,

汉诺塔问题—java详解(附源码)

只需要挪动一次就好了。仔细思考,不难想到:会经过三个步骤 。1.A->B2.A->C3.B->C 1.A->C,A->B: 2.C->B,A->C4.B->A,B->C,A->C 最终完成了当n等于3的情况,一共挪动了7步。具体可以参考当n等于3时进行深入理解。 话不多说,直接上代码: 好了,今天就分享这么多,谢谢大家。

2301_76249062的博客 2909

java汉诺塔小游戏程序源码

这是汉诺塔小游戏java版源码,希望对大家有所帮助

Java 递归实现汉诺塔小游戏

Java 递归实现汉诺塔小游戏

qq_45256357的博客 507

汉诺塔游戏java源代码

汉诺塔游戏java源代码,只是一个简单的游戏,没有演示功能,有利于java学习者对界面和鼠标事件的学习

java实现汉诺塔小游戏

用java实现的汉诺塔游戏,含源代码和可执行exe文件,供初学者参考学习

汉诺塔(java实现,个人理解描述)

起始柱,过渡柱,终点柱,并没有硬性的指向一根柱子,这3个名词都只是柱子的一个临时名称,在盘子移动的过程中这3根柱子的名称是在不断变换的。也就是说,左边的柱子在游戏开始的时候被称为起始柱,再进行n次移动之后,你一定会将它看作过渡柱,再移动n次,它一定又会被你看作终点柱,这些命名都是临时性的,循环往复。所以我这篇博客,讲述的是我在学习的过程中的一点个人理解,有许多自己总结的笔记,多多少少有点在迷茫中引路的效果,希望对不懂得人有帮助。* 难点就是在游戏的过程中,要不断的去重新定义,起点柱,过渡柱,终点柱。

m0_63204398的博客 1658

java汉诺塔游戏小程序

一部分代码如下: JTextField field; //用于获取盘数 JLabel label = new JLabel("请输入盘数"); JButton button; public static String output;//用于保存移动的步骤 JTextArea outputArea = new JTextArea(17,20);//用于输出

汉诺塔问题及Java代码实现(牛客笔记)

汉诺塔问题 描述 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如图1)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。(图片来自百度百科) 递归思想 将汉诺塔问题的解决方案可以分为3步: 把n-1个盘子从Left借助Mid,搬到Righ

weixin_44473131的博客 6266

人机协作新纪元:AI会抢走IT人的饭碗吗?

产品经理用自然语言描述需求,AI将其转化为技术规格书(准确率已达89%)

818

将点云坐标转换成世界坐标的demo

将点云坐标转换成世界坐标的demo

howard789的博客 2206

汉诺塔问题学习报告

汉诺塔问题学习报告 (如解析和参考有错误或可以精进之处,欢迎批评指正。) 法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵

eliyou的博客 6685

基于QT的华为网络摄像头二次开发

第一次使用华为的网络摄像头并进行二次开发,网上关于QT对华为网络摄像头的二次开发的文章很少,基于项目的需求做了一些工作,特此记录。 目标: 1、实时预览 2、手动控制录制视频 3、监听告警型号 4、实时获取元数据中的划定区域内的人数 摄像头型号如下: 准备工作: 在购买摄像头后,应当在官网下载对应的开发资料,如果需要权限,则联系华为的技术支持人员。下载资料如下: SDC Development Kit Demo 8.0.T9 SDK DEMO下载地址:https://bbs.hua

xumingyifrend的博客 3168

汉诺塔问题深度解析

汉诺塔问题(Tower of Hanoi)不仅是理解递归算法的绝佳案例,还蕴含着丰富的数学规律和逻辑思维。本文我将全面深入地介绍汉诺塔问题的起源、问题描述、递归求解原理、多语言实现、复杂度分析,以及其在实际场景中的拓展与应用

1537

独立游戏开发者必看:STEAM税务信息更新全流程(附中国区避坑指南)

本文为独立游戏开发者详细解析了Steam税务信息更新的全流程,重点针对中国区开发者提供了避坑指南。文章深入解释了W-8BEN表格的填写要点,并指导如何准备个人所得税纳税记录和身份证等核心证明文件,以确保顺利通过审核,避免收入被预扣税款。

tcp8optimizer的博客 1281

【自动驾驶端到端5:VADv2: End-to-End Vectorized Autonomous Driving via Probabilistic Planning】

从大规模人类驾驶演示中学习类人驾驶策略是有希望的。但是,规划的不确定性使得从驾驶演示中提取驾驶知识是有挑战性的。从统计学习的角度来看,动作(包括实际和速度)是高度随机的,受许多无法建模的潜在因素影响。

weixin_40000560的博客 1404

汉诺塔问题详解

汉诺塔递归详解

m0_68989458的博客 3万+

基于YOLOv8的工业瓷砖缺陷检测:深度学习与UI界面的应用

本文详细介绍了如何使用YOLOv8进行工业瓷砖缺陷检测,并结合图形用户界面(UI)提供了完整的实现方案。通过YOLOv8模型,我们可以高效、精确地检测瓷砖图像中的缺陷,显著提高生产过程中的质量控制水平。随着数据集的进一步扩展和YOLOv8模型的不断优化,未来瓷砖缺陷检测的精度和速度将不断提高。此外,基于深度学习的缺陷检测技术不仅可以应用于瓷砖生产,还可以推广到其他领域的质量检测中。

YOLO 603

Python解决汉诺塔问题

问题引入 汉诺塔问题源于印度一个古老传说。相传大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作? 相关问题-递归 在编程语言中,如果一种计算过程的其中每一步都会用到前一步或前几步的结...

Lemon的博客 5万+

特征拼接(Feature Concatenation)技术全景解析

特征拼接是深度学习中的核心特征融合技术,通过在指定维度连接不同来源的特征张量,创造性地解决了多源、多尺度特征融合的关键挑战。这种简单却强大的操作已成为现代神经网络架构设计的基石。

浩瀚之水的专栏 1639

数字信号处理(一):Xilinx Vivado DDS IP核设计实例(文末附源码)

前言 在数字信号处理时我们经常会用到数字变频,包数字下变频(DDC)和数字上变频(DUC),这其中会用到Xilinx公司的DDS IP核或者Altera公司的NCO IP核来产生本振频率,以现数字域信号频谱搬移。本文我们通过例化Xilinx公司的DDS IP核来产生混频器本振输入频率,并给出Modelsim仿真测试结果。 1、Xilinx DDS IP简介 Xilinx公司的DDS IP核使用AX...

FPGA_Designer 1万+

关于汉诺塔问题

关于汉诺塔问题

weixin_53212110的博客 3624

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: 游戏中记时的另一方法
下一篇: 通用程序设计(1)---通用包
ceun
博客等级 码龄21年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值