在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);
答案 0 :(得分:1)
每个杆都是一叠圆盘,因此请使用Stack
类(java.util.Stack
)。然后,您可以使用push(item)
和pop()
方法来放置整数并从每个标尺的顶部取整数。
因此,每个标尺是Stack
中的Integers
。要从杆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];
}
}