Programação e Algoritmos III Trabalho Prático (Aula Prática N.º 2

Propaganda
Departamento de Engenharia Informática
FCTUC
Programação e Algoritmos III
2001/2001
Trabalho Prático (Aula Prática N.º 2)
Recursividade
Introdução
O objectivo deste trabalho é permitir aos alunos resolver um problema usando algoritmos recursivos. O livro seguido na
cadeira e sobre o qual se baseia o trabalho é o “Data Structures & Problem Solving Using Java”, de Marc Weiss, que
está disponível na biblioteca. Nesse livro, o tema da recursividade é desenvolvido no capítulo 7. Aconselha-se a leitura
deste capítulo para a resolução do trabalho prático.
Problema
É objectivo deste trabalho prático ajudar o nosso amigo robot Floppy a determinar se um labirinto tem uma saída
possível. O Floppy é um robot simpático, mas muito jovem e distraído. Devido às suas frequentes distracções, muitas
vezes entra em sítios dos quais não sabe sair, como o que se mostra na figura seguinte. Assuma que a entrada do
labirinto se encontra no canto inferior direito e a saída no canto superior esquerdo. O labirinto pode conter intersecções
e troços sem saída, e o Floppy só se pode deslocar nas direcções Norte, Sul, Oeste e Leste (ou seja, não são permitidas
deslocações em diagonal).
Saída ?
? Entrada
A geografia do labirinto é definida através de um ficheiro de texto com a seguinte especificação:
<nº linhas> <nº colunas>
<linha nº 1 do labirinto> (0 = posição livre, 1 = posição ocupada)
...
<linha nº n do labirinto> (0 = posição livre, 1 = posição ocupada)
Por exemplo, o labirinto representado na figura seria definido da seguinte maneira:
8 12
001101110101
100000010101
101110010101
101011110101
101000000101
101011010101
100001000101
111111111100
Desenvolva um programa em Java que leia a especificação de um labirinto e determine se esse labirinto tem ou não
saída possível. Proteja e comente devidamente o seu programa.
Download