大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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]
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/182891.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...