Поскольку в программе должны присутствовать общие классы Queue
, Stack
и Coordinate
, необходимо создать 4 объекта:
Один объект класса Stack <Coordinate>
, называемый «path»
, и объект
класса Stack > под названием «возможности»
, оба из
которых могут хранить 40 координат (5 x 8 - 5 строк и 8 столбцов);
Один объект класса Queue <Coordinate>
, называемый «queue»
, который
хранит 3 координаты и ставит в очередь пустые пробелы или символ «S»
вокруг текущей позиции, найденной при поиске по всем 4 направлениям.
(В первом поиске, например, очередь будет: [(1,1),,] As 1,1
- это
первое свободное место, найденное из начальной позиции, которое затем
добавляется в очередь).
Один объект класса Coordinate
, называемый «current»
, который
представляет текущую позицию.
5 представляет количество строк. 8 - количество столбцов. Символ #
представляет собой стену, непроходимую местность. Символ E
является стартовой позицией, символ S
- это выход, а пустые пробелы (char ''
) представляют собой пробелы. Таким образом, программа сначала передает лабиринт текстового файла в матрицу с указанным числом строк и столбцов на ней (5 и 8)
, а затем находит символ E
, который является стартовой позицией и создает "текущую" Объект, сохраняя на нем свою координату ((1,0)
в случае).
Оттуда он ищет все 4 направления вокруг текущей позиции по часовой стрелке (вверх, вправо, вниз и влево в этом порядке) и сохраняет координаты пустых пространств (или char 'S'
), найденных в объекте "queue"
И удаляет первую координату из «очереди», сохраняя эту координату на «текущем» объекте, который представляет текущую позицию. Затем, на матрице, помещает символ *
в позицию, представленную «текущим» объектом (координатой), указывая, что был сделан шаг. Затем складывает объект «текущий» в объект «путь» и складывает объект «очередь» на объект «возможности».
Затем повторяет эти шаги, пока не найдет выход (символ S
), печать матрицы и закрытие программы.
В конце, поскольку каждая позиция отмечена символом *
, матрица должна выглядеть так:
(Текстовый файл не изменяется).
5
8
########
E*** #
###*####
###*####
###S####
До сих пор я создавал классы:
Queue:
public class Fila <T> {
private Object[objfila] = null;
private int quantidade,posinicial,posfinal;
public void inserir(Object x) throws Exception
{
if(quantidade==objfila.length)
throw new Exception("Queue is full");
x=objfila(posfinal);
quantidade++;
posfinal++;
}
public void remover() throws Exception
{
if(quantidade==0){
throw new Exception("there are no elements on the queue");
}
quantidade--;
posinicial++;
}
public Fila(int capacidade)
{
this.posinicial=0;
this.posfinal=0;
Object objfila=new Object();
}
}
Stack:
public class Pilha <T> {
private Object[] objpilha = null;
private int topo;
public void inserir(T x) throws Exception
{
if(topo==objpilha.length-1){
throw new Exception("the stack is full.");
}
topo++;
objpilha[topo]=x;
}
public void remover() throws Exception
{
if(topo==-1){
throw new Exception("there are no elements to be removed.");
}
topo--;
}
public Pilha(int capacidade){
objpilha=new Object[capacidade];
topo=-1;
}
}
And Coordinate: (I think there should be an array of x and y that stores coordinates)
public class Coordenadas <T>{
private int x;
private int y;
}
У меня возникают проблемы с созданием этих объектов и вставкой их в другие объекты, например, при сохранении найденных координат в «очереди» и при укладке «текущего» объекта в объект «путь». Как правильно сделать эту программу?
Извините за длинный вопрос.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть список и удаляю данные со значением busy но он оставляет 2-3 прля с этим значениемпочему?
Впервые работаю с Java и Intelij idea, да и собственно с Селенидом тожеПрежде использовал с# со студией и побывал Селениум
Объясните пожалуйста, как происходит добавление объекта ZipEntry в архив с помощью метода putNextEntry() класса ZipOutputStream, так как я новичок не получается...