【问题标题】:How to use generic classes to solve a Maze?如何使用泛型类解决迷宫?
【发布时间】:2017-11-01 15:19:54
【问题描述】:

我正在开发一个迷宫求解程序,它基本上从一个文本文件中读取一个迷宫,从起点检查它周围的所有侧面并移动到空旷的空间,标记上一个位置并在找到出口时终止。

虽然算法本身已经完成,但有一些事情我想澄清一下。该程序需要使用我没有使用的通用类 Stack、Queue 和 Coordinates(存储当前 x,y 坐标)(我使用 Vectors 来保存位置)和其他操作,例如在堆栈。

这是主循环:

if(maz[x][y-1]==' '||maz[x][y-1]=='S'){
    if(maz[x][y-1]=='S')
        exitfound=true;
    maz[x][y]='*';
    maz[x][y-1]='@';
    y=y-1;
}

它检查上面的坐标是空地还是出口('S'),如果是,它会移动到那里,同时用*标记上一个位置,用'@标记它要移动到的位置'。这也与其他 3 面重复。在程序结束时,所有步行空间都将标有 *。但是,我需要使用上述泛型类来操作坐标。

这些是必需的类及其对象:

Stack<Coordinate> path = new Stack<Coordinate>(40);
Stack<Queue<Coordinate>> possibilities = new Stack<Queue<Coordinate>>(40);
Coordinate current = new Coordinate(x,y);
Queue<Coordinate> queue = new Queue<Coordinate>(3);

我不明白如何在current 对象上存储坐标,并在Queue&lt;Coordinate&gt; 类的queue 对象中插入坐标,并在possibilities 对象上堆栈queue 对象,来自@ 类987654328@。这是怎么做到的?

【问题讨论】:

    标签: java generics stack queue maze


    【解决方案1】:

    您可以使用以下方法添加到队列中:

    queue.add(coordinate);
    

    queue 就像主题公园的排队。第一个进来的人是第一个出去的人(FIFO)。 stack 就像一堆盘子。你放下的第一个盘子,是你用的最后一个盘子。后进先出 (LIFO)。

    Javadoc:StackQueue

    【讨论】:

    • 那不是我的问题。
    • 您需要知道如何将项目添加到队列和堆栈中吗?
    • 如何将坐标(即:3,4)添加到类坐标、堆栈和队列中。
    • 但是坐标不是一个整数,队列类怎么存储呢?
    猜你喜欢
    • 2014-05-07
    • 2019-02-01
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多