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.