Estruturas de Dados 2020/2021 (CC1007) - DCC/FCUP

Aula Prática #08 - Consolidação de Conhecimentos (Listas, Pilhas e Filas)
(semana de 05/04 a 09/04)


Exercícios para submissão

Para efeitos da nota atribuída à resolução de exercícios ao longo do semestre, os exercícios que pode submeter desta aula são:

Prazo de submissão: 15 de Maio (submeter no Mooshak de EDados)

É encorajado que vão falando com os docentes e outros colegas se tiverem dificuldades. No entanto, qualquer ajuda mais direta que tenham recebido de outros colegas deve ser reconhecida nos comentário do programa que submetem.
Depois do prazo os problemas continuarão disponíveis no Mooshak, mas as submissões não contarão para a sua nota.
Cada aula vale 10% da nota desta componente. Como existem 12 aulas com submissões, pode ter pontuação máxima mesmo sem ter feito tudo.
Para um problema contar tem acertar todos os testes (ou seja, ter accepted). Mesmo que resolva todos os problemas, o máximo numa aula é de 100%.
Para ter 100% bastará sempre resolver os exercícios do guião principal.


Aula de Recuperação e Consolidação

Nesta semana iremos fazer uma aula mais de recuperação e consolidação de conhecimentos. Se ainda não o fez, a sua prioridade deverá ser primeiro fazer os exercícios principais sugeridos nas aulas #06 e #07 (nos guiões dessas aulas pode encontrar dicas para cada um dos exercícios sugeridos). Em particular, certifique-se que:


Exercício 1) Triagem de Manchester

O ideia deste exercício é resolver um problema um pouco maior usando os conceitos que aprendeu de listas, pilhas e filas. O objectivo é submeter com sucesso o problema [ED098] Triagem de Manchester ("Volume 4 (Pilhas e Filas)") criando um código adequado e estruturado. Não se esqueça de ir testando sempre as coisas que vai implementando!

  1. O início.
    Comece por ler com muita atenção o enunciado do problema, para perceber o que é pedido.
     
  2. Código inicial.
    Para este problema vamos guiá-lo detalhadamente para uma solução minimamente organizada. Deverá por isso começar por ir buscar o seguinte código inicial: ED098_codigo_inicial.java (ver em html)
  3. flag==0.
    A primeira flag pede essencialmente para ler os dados dizer o número de doentes de cada tipo, bem como o total de doentes.
  4. flag==1.
    [para fazer este problema bastaria fazer a flag2, que "inclui" a flag1, mas vamos fazer uma de cada vez]
    Esta flag pede para simular o que acontece quando existe apenas uma equipa de urgência.
  5. flag==2.

Exercício 2) Quartel de Bombeiros

Resolva agora "sozinho" um problema semelhante ao anterior, mas um pouco mais fácil. Procure fazer um código organizado, com várias classes representando as várias entidades do problemas, e vários métodos, cada um dedicado à sua (pequena) tarefa.


Exercícios extra para consolidação de conhecimentos

  1. Mais um problemas de pilhas e filas
    Tem disponível no Mooshak de EDados, no "Volume 4 (Pilhas e Filas)" mais um problema do género dos dois sugeridos como principais nesta aula::
  2. Jogos de Cartas.
    Para testar a sua organização faça agora algo diferente:

Exercício de Desafio

Para esta semana disponibilizo um problema não muito complicado, também da minha autoria, e que foi usado numa fase de qualificação das Olimpíadas Nacionais de Informática:

O limite de tempo de execução para cada caso de teste é de 2 segundos, pelo que a solução só será aceite e com pontuação máxima no Mooshak se for minimimamente eficiente (sendo que já dei mais alguma "margem de manobra": a solução oficial demora bem menos que 1s, mesmo para um caso com os 3000 pontos).