Escolar Documentos
Profissional Documentos
Cultura Documentos
Entrada:
Saída:
Você deve respondes com o número mínimo de apertos que deve fazer para
passar de s para g ou enviar “use as escadas” se for impossível, dada a
configuração do elevador.
Exemplo
Entrada: 10 1 10 2 1
Saída: 6
Entrada: 100 2 1 1 0
Explicação:
Este é um exercício simples de BFS. Mantenha uma fila (uma lista vinculada) de
andares que você pode visitar, remova atual e adicione (se ainda não tiver
visitado) atual u e atual d à sua fila, mantendo o controle de quantas etapas você
usou para chegar lá, ou seja, etapas [atual]. Depois de atingir a meta, você
retorna as etapas [meta]. Se você nunca atingir a meta, use as escadas.
Representação de estados
Estado atual
Estado objetivo
Estados inválidos
Quando o usuário não pode subir e o piso objetivo é maior do que o piso
que você está
Quando o usuário não pode descer e o piso objetivo é menor do que o
piso que você está.
Ultrapassar todos os valores de tentativas;
Ações
Receber do usuário as devidas informações, a quantidade de pisos do prédio, o
piso no qual ele se encontra, o piso no qual ele quer chegar e quantidade de
pisos que ele subirá ou descerá ao pressionar o respectivo botão, com isso
aplicando o bfs e o dfs.
Codificação
var f, s, g, u, d
leia(f)
leia(s)
leia(g)
leia(u)
leia(d)
se(g==s)
retorna sucesso;
retorna falha
escreva(“use a escadas”);
bfs(f, s, g, u, d){
estado = s;
enfileira(estado);
enquanto(!pilha_vazia()){
estado = desenfileira();
se (g = s)
retorna sucesso;
filhos = expande(estado);
para cada filho em filhos
enfileira (filho);
Retorna fal