Você está na página 1de 1

Faculdade de Informática

Algoritmos e Programação III


Prof. Michael da Costa Móra

Uma conhecida empresa do ramo da papelaria tem um campo de testes de canetas e


lápis de cor, onde um robô faz testes de resistência e tempo de uso das canetas. O
robô é programado da seguinte forma:

 Ele recebe um alfabeto com k símbolos diferentes. Por exemplo, 1, 2, 3 e 4;


 Ele recebe a informação de que deve escrever palavras com exatamente p
símbolos.

Devido a um problema de projeto (o robô é um pouco antigo), o robô tem algumas


restrições:

 O robô pode começar a escrever uma palavra usando qualquer símbolo dado;
 O robô só consegue escrever símbolos iguais ao último que foi escrito, ou
algum símbolo que venha depois dele.

Por exemplo, o robô consegue escrever 1111, 1223 e 3334, mas não pode escrever
1232. Você deve estudar a configuração do robô, receber informações sobre k e p e
determinar quantas palavras podem ser escritas, gerando-as e contando-as. De
forma mais completa, sua tarefa é:

1. Modelar o problema e determinar se ele pode ser resolvido de forma prática;


2. Caso seja, desenvolver um algoritmo eficiente para realizar esta tarefa.
Explicar detalhadamente o algoritmo e obter os resultados;
3. Caso não seja possível, determinar as razões;
4. Apresentar suas conclusões.

Você deve entregar seus resultados na forma de um artigo relatando o método de


solução usado, as eventuais dificuldades encontradas, a solução achada, o tempo
usado para execução do algoritmo e tudo o mais que você achar interessante, exceto
o código fonte. O código fonte e o executável devem ser entregues em um único
arquivo .zip, junto com artigo.

Trabalhos enviados por e-mail não serão considerados. Um exemplo de relatório e os


critérios de avaliação estão disponíveis em http://www.inf.pucrs.br/~oliveira/construcao.

Letrinhas miúdas:
As únicas linguagens permitidas para implementação são C#, C++ e Java. Siga exatamente os
formatos de entrada e de saída de dados.