Skip to content

Instantly share code, notes, and snippets.

@astamatto
Last active September 18, 2017 00:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save astamatto/6d045cc295898b9819199395c548f303 to your computer and use it in GitHub Desktop.
Save astamatto/6d045cc295898b9819199395c548f303 to your computer and use it in GitHub Desktop.
#include <string>
using namespace std;
//usando uma matriz de caracteres para representar o labirinto
//'p' = parede, 's' = saida, 'v' = visitado
void caminhar(Grafo, linha, coluna, percursoAtual) {
percursoAtual = "(" + to_string(linha) + "," + to_string(coluna) + ")"; //adicionamos o quadrado atual ao percursoAtual
if (Grafo[linha][coluna]=='s') { //se estamos no quadrado de término (saída), acabou: sucesso!
cout << "Encontramos a saída, caminho: " << percursoAtual << "\n"; //imprimimos o caminho seguido
} else {
Grafo[linha][coluna] = 'v'; //estamos visitando este quadrado do labirinto
int proxLinha, proxColuna;
//vizinho a esquerda
proxLinha = linha; proxColuna = coluna-1;
if (Grafo[proxLinha][proxColuna] != 'p' && Grafo[proxLinha][proxColuna] != 'v') {
caminhar(Grafo, proxLinha, proxColuna, percursoAtual);
}
//vizinho a direita
proxLinha = linha; proxColuna = coluna+1;
if (Grafo[proxLinha][proxColuna] != 'p' && Grafo[proxLinha][proxColuna] != 'v') {
caminhar(Grafo, proxLinha, proxColuna, percursoAtual);
}
//vizinho a cima
proxLinha = linha-1; proxColuna = coluna;
if (Grafo[proxLinha][proxColuna] != 'p' && Grafo[proxLinha][proxColuna] != 'v') {
caminhar(Grafo, proxLinha, proxColuna, percursoAtual);
}
//vizinho a baixo
proxLinha = linha+1; proxColuna = coluna;
if (Grafo[proxLinha][proxColuna] != 'p' && Grafo[proxLinha][proxColuna] != 'v') {
caminhar(Grafo, proxLinha, proxColuna, percursoAtual);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment