GeraProva GeraProva Provas com IA para professores do Brasil
Computação7º anoBNCC EF69CO06Difícil⏱ longo

Projete um algoritmo em pseudocódigo que receba como dado de entrada uma string binária s (composta por '0' e…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EF69CO06

Comparar diferentes casos particulares (instâncias) de um mesmo problema, identificando as semelhanças e diferenças entre eles, e criar um algoritmo para resolver todos, fazendo uso de variáveis (parâmetros) para permitir o tratamento de todos os casos de forma genérica.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Projete um algoritmo em pseudocódigo que receba como dado de entrada uma string binária s (composta por '0' e '1') e uma variável k (inteiro par > 0). O algoritmo deve retornar verdadeiro se existir em s uma substring de comprimento k que contenha exatamente k/2 caracteres '1', e falso caso contrário. Explique a abordagem e a complexidade.

✍️ Questão dissertativa: veja abaixo a resposta esperada e a explicação.

Resposta esperada

Pseudocódigo (janela deslizante) Entrada: s (string de '0'/'1'), k (inteiro par) se k <= 0 ou k > comprimento(s) então retornar falso fim se contador1 <- 0 // inicializa contagem na primeira janela para i de 0 até k-1 faça se s[i] == '1' então contador1 <- contador1 + 1 fim para se contador1 == k/2 então retornar verdadeiro // desliza a janela para i de k até comprimento(s)-1 faça se s[i] == '1' então contador1 <- contador1 + 1 se s[i-k] == '1' então contador1 <- contador1 - 1 se contador1 == k/2 então retornar verdadeiro fim para retornar falso Abordagem e complexidade: Usa-se técnica de janela deslizante para manter a contagem de '1' em cada substring de comprimento k atualizando-a em tempo constante quando a janela avança. A inicialização custa O(k) e cada deslize custa O(1), totalizando O(n) tempo para n = comprimento(s). A memória extra é O(1) (apenas variáveis de contagem e índices).

Explicação

A abordagem de janela deslizante permite verificar eficientemente todas as substrings de comprimento k, mantendo a contagem de '1's atualizada com operações de tempo constante. Isso garante que o algoritmo percorra a string apenas uma vez, resultando em uma complexidade linear. A utilização de variáveis de contagem minimiza o uso de memória, tornando a solução eficiente em termos de recursos.

Raio-X da questão

Dificuldade Difícil
Bloom Criar
Leitura alto
Discriminação alto
Peso pedagógico alto
Autonomia do enunciado completo
Cobertura da habilidade multipla
🧪 Simulado🩺 Diagnóstico🧮 Exige cálculo🏠 Cotidiano🔗 Interdisciplinar⭐ Representativa✍️ interpretativa🧩 desafio
🎯 Conceito central

algoritmo em pseudocódigo

📌 Objetivo

avaliacao

🧱 Pré-requisitos

strings e substrings · lógica de programação

📚 Reveja

Revisar como contar caracteres em substrings.

⚠️ Erro mais comum

O aluno pode confundir a contagem de caracteres, não verificando corretamente a quantidade de '1's na substring.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

abstrato

Questões parecidas com resolução

Todas as questões de Estratégias de solução de problemas - Generalização

🔎 Procurar outra questão

Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.

Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog

Ocorreu um erro inesperado. Recarregar X

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.