汉诺塔问题java代码_汉诺塔问题编程算法

汉诺塔问题java代码_汉诺塔问题编程算法代码:packagecom.wangyq.datastructrue.arithmetic;importjava.util.Arrays;importjava.util.Stack;/***分治算法-汉罗塔*/publicclassDivideAndConquer{publicstaticvoidmain(String[]args){//定义一个汉罗塔TowerofHanoitowerofHanoi=newT

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

代码:

package com.wangyq.datastructrue.arithmetic;

import java.util.Arrays;
import java.util.Stack;

/** * 分治算法-汉罗塔 */
public class DivideAndConquer { 
   
    public static void main(String[] args) { 
   
        //定义一个汉罗塔
        TowerofHanoi towerofHanoi = new TowerofHanoi(4);
        towerofHanoi.show();
        towerofHanoi.hannoi();
    }

}

class TowerofHanoi { 
   
    int tier = 0;
    Stack column1 = new Stack();
    Stack column2 = new Stack();
    Stack column3 = new Stack();

    TowerofHanoi(int tier) { 
   
        this.tier = tier;
        //初始化汉罗塔
        for (int i = tier; i > 0; i--) { 
   
            column1.push(i);
        }
    }

    /** * 打印汉罗塔 */
    public void show() { 
   
        System.out.println("汉罗塔:");
        System.out.println("第一根柱子" + Arrays.toString(column1.toArray()));
        System.out.println("第二根柱子" + Arrays.toString(column2.toArray()));
        System.out.println("第三根柱子" + Arrays.toString(column3.toArray()));
    }


    public void hannoi() { 
   
        move(tier, column1, column2, column3);
    }

    /** * 汉罗塔移动 */
    public void move(int tier, Stack stack1, Stack stack2, Stack stack3) { 
   
        if (tier == 1) { 
   
            //只有一个直接移上去
            stack3.push(stack1.pop());
            show();
        } else { 
   
            //
            move(tier - 1, stack1, stack3, stack2); //将n-1个在A柱子的盘子通过c柱子移动到B柱子
            stack3.push(stack1.pop());
            show();                                       //将A柱子上编号为n的盘子移动到c柱子
            move(tier - 1, stack2, stack1, stack3);  //将在B柱子的n-1盘子通过A柱子移动到C柱子
        }
    }
}

结果:
汉罗塔:
第一根柱子[4, 3, 2, 1]
第二根柱子[]
第三根柱子[]
汉罗塔:
第一根柱子[4, 3, 2]
第二根柱子[1]
第三根柱子[]
汉罗塔:
第一根柱子[4, 3]
第二根柱子[1]
第三根柱子[2]
汉罗塔:
第一根柱子[4, 3]
第二根柱子[]
第三根柱子[2, 1]
汉罗塔:
第一根柱子[4]
第二根柱子[3]
第三根柱子[2, 1]
汉罗塔:
第一根柱子[4, 1]
第二根柱子[3]
第三根柱子[2]
汉罗塔:
第一根柱子[4, 1]
第二根柱子[3, 2]
第三根柱子[]
汉罗塔:
第一根柱子[4]
第二根柱子[3, 2, 1]
第三根柱子[]
汉罗塔:
第一根柱子[]
第二根柱子[3, 2, 1]
第三根柱子[4]
汉罗塔:
第一根柱子[]
第二根柱子[3, 2]
第三根柱子[4, 1]
汉罗塔:
第一根柱子[2]
第二根柱子[3]
第三根柱子[4, 1]
汉罗塔:
第一根柱子[2, 1]
第二根柱子[3]
第三根柱子[4]
汉罗塔:
第一根柱子[2, 1]
第二根柱子[]
第三根柱子[4, 3]
汉罗塔:
第一根柱子[2]
第二根柱子[1]
第三根柱子[4, 3]
汉罗塔:
第一根柱子[]
第二根柱子[1]
第三根柱子[4, 3, 2]
汉罗塔:
第一根柱子[]
第二根柱子[]
第三根柱子[4, 3, 2, 1]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182891.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Drupal Views教程[通俗易懂]

    Drupal Views教程[通俗易懂](一):简介打个比方来说明一下Views的作用:Drupal的核心就像一个毛坯房,墙窗户门都有了,也简单的粉刷过了,搬进来也能住;外观主题(Theme)就像室内装修,可以按照自己的喜好来铺地板或是地毯,选择各种各样喜欢的墙纸等等;模块呢,就好比家具,电器之类的,有了模块可以方便实现各种方便的功能,大部分模块都像冰箱电视一样,启动,摆在那里就行了,但是有些模块可以说是大工程,譬如C

    2022年5月4日
    80
  • sbc 通信_ipc进程间通信

    sbc 通信_ipc进程间通信SBC在企业IP通信系统中的应用刘航2008/05/04  摘要:本文针对企业IP通信系统建设实施的两大问题:终端接入安全和IP多媒体业务NAT穿越,介绍了基于SBC(SessionBorderController,会话边界控制器)的解决方案,并提出了利用SBC辅助实现IP录音的一种新应用模式。  关键词:IP通信、SBC、NAT穿越、安全、IP录音一、引言

    2025年10月30日
    3
  • vue md5.js_VUE.js

    vue md5.js_VUE.js<template><div><mavonEditorv-model=”markdown”:codeStyle=”codeStyle”></mavonEditor><divv-html=”compiledMarkdown”></div></div></template><script>//编辑import{mavonEditor}from’.

    2025年11月19日
    3
  • 大白菜运行ghost备份恢复工具_大白菜备份的系统被隐藏了

    大白菜运行ghost备份恢复工具_大白菜备份的系统被隐藏了不是经常换系统,容易换机,简单记录下先在u盘做一个系统,我用的大白菜电脑启动的时候进入u盘系统根据自己电脑型号查询如果启动的时候可以选择启动菜单是最方面的,直接通过启动菜单启动u盘系统如果启动的时候没有启动菜单,需要去bios里面调整顺序进入大白菜系统后,我选择的ghost备份还原…

    2025年9月2日
    8
  • Java 审计之SSRF篇(续)

    Java审计之SSRF篇(续)0x00前言先来说说为啥会有该篇章,在刚刚码完上篇文章后,后来又去找了找在Java中的一些远程请求的类。果然翻到了一些有意思的东西,在这里就拿出来给大家分享一下。

    2021年12月12日
    53
  • Python 九九乘法表[通俗易懂]

    Python 九九乘法表[通俗易懂]#python九九乘法表#创建外层循环控制高度i=0whilei<9:#先+=,从1开始计算i+=1#创建内层循环控制宽度j=0whilej

    2022年7月5日
    22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号