Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

328
Visualizações
Recursivo para encontrar la ruta más corta usando DFS en laberinto en Java

`Recibí un error de desbordamiento de pila al usar este código. quiero que funcione si ya encontramos la ruta más corta, entonces el código recursivo se detendrá. el laberinto contiene el carácter '#' y ' '. y si encuentro el camino más corto, el camino se marcará con '.' por favor ayuda gracias

 public static int getCoordinateY(String location){ //to get x coordinate String y = location.substring(2, 4); int coor = (y.charAt(0) - 'Q') * 10 + Character.getNumericValue(y.charAt(1));`enter code here` return coor; } public boolean canPass(int y,int x) { //you can keep going if you not found # and . if(map[y][x] == '#' || map[y][x] == '.' ) { return false; } return true; } public Character[][] cloneArray(Character[][] src) { //copy array int length = src.length; Character[][] target = new Character[length][src[0].length]; for (int i = 0; i < length; i++) { System.arraycopy(src[i], 0, target[i], 0, src[i].length); } return target; } public void finish(int x,int y){ //goal xgoal=x; ygoal=y; } public int getDistance(){ //shortest distance from shortest path return finalDistance; } public void shortestPathStart(int xStart,int yStart, int xEnd, int yEnd){ set('S',xStart,yStart); //start coordinate finish(xEnd,yEnd); shortestPathRec(xStart+1,yStart,0,map);//to right shortestPathRec(xStart-1,yStart,0,map);// to left shortestPathRec(xStart,yStart+1,0,map);//to up shortestPathRec(xStart,yStart-1,0,map);// to down map = result; //final map with '.' set('F',xEnd,yEnd); print(); } public void shortestPathRec(int x,int y,int step,Character[][] map){ if(canPass(x,y)){ step++; Character[][] temp = cloneArray(map); temp[x][y] = '.'; //in the maze, '.' using for flags if(x == xgoal && y == ygoal){//if already found the goal hasDone = true; finalDistance = step; result = temp; return; } if(hasDone==true && finalDistance<step){ //if shortest path is found other path should be in this condition return; } shortestPathRec(x+1,y,step,temp);//calltherecursive again shortestPathRec(x-1,y,step,temp); shortestPathRec(x,y+1,step,temp); shortestPathRec(x,y-1,step,temp); } }
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

ANÁLISIS DEL PROBLEMA

No se protege contra el retroceso físico: se mueve hacia una pared, pero en lugar de retroceder en su pila de llamadas (deshacer el último movimiento), va a la siguiente llamada recursiva y hace el movimiento opuesto , dando un segundo paso inútil en su lugar. de retroceder hasta 0 pasos inútiles. Su código caminará infinitamente entre esos dos cuadrados hasta que exceda el límite de pila.

REPARAR

Madifique su código para que nunca camine a una plaza que ya ha visitado en este camino. Esto es bastante fácil de investigar en línea; El algoritmo de Dijkstra es una de las primeras soluciones generales.

EVITACIÓN

Aprenda la depuración básica. Entre otras cosas, inserte sentencias de impresión a la entrada y salida de cada rutina, imprimiendo los parámetros de entrada y los valores de retorno. Para mayor claridad, mantenga un contador de profundidad y sangre las impresiones adecuadamente.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda