String [] args中的程序输入将看起来像这样的123 0 0,其中河内塔的每个杆都由一个空格分隔,每个1位整数表示该大小的磁盘。

如何制作HanoiState类,该类允许我保存作为输入提供的当前状态,并进行设置,以便将任何磁盘从棒的顶部移动到棒的顶部(在本例中为“ 1”)与其相邻的一个很简单。

命令行提示符示例:$ java hanoi 123 0 0或$ java hanoi 12 0 4 0

我正在考虑在解析输入后为n个杆构建n个优先级队列。但是,杆数不是恒定的,我不确定如何编码。

是否还可以构造优先级队列数组?或优先级队列列表?

public static class HanoiState {
    public HanoiState(int rods){

    }
}

 public static void main(String[] args) {
    if (args.length < 3) {
        return;
    }
    HanoiState a = new HanoiState(args.length - 1);

最佳答案

每个杆都是一叠圆盘,因此请使用Stack类(java.util.Stack)。然后,您可以使用push(item)pop()方法从每个标尺的顶部放置和取出整数。

因此,每个棒是StackIntegers。要从杆n中取出光盘,请调用rods[n].pop(),然后将尺寸为i的光盘放入杆n中,请调用rods[n].push(i)

import java.util.Stack;

public class HanoiState {
    Stack<Integer>[] rods;

    public HanoiState(int numOfRods){
        this.rods = (Stack<Integer>[]) new Stack[numOfRods];
    }
}

10-06 06:22