gpt4 book ai didi

java - 如何构造一个需要非常量堆的类

转载 作者:行者123 更新时间:2023-11-30 05:46:14 25 4
gpt4 key购买 nike

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() 方法在每个杆的顶部放置和取出整数。

所以每根棒都是一个整数堆栈。要从杆 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];
}
}

关于java - 如何构造一个需要非常量堆的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54793266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com