Pular para o conteúdo principal

Questão de Algoritmos e Estrutura de Dados — Estrutura de Dados — FADURPE 2024

Algoritmos e Estrutura de DadosEstrutura de Dados
Código
qg129608
Banca
FADURPE
Órgão
UFRPE
Ano
2024
Nível
Superior
Cargo
Analista de Tecnologia da Informação/Área Sistemas
Dados os índices i e j do elemento M[i,j], qual é o correspondente índice em A?
  1. Ak = (i − 1) ∙ n + j − 1
  2. Bk = i ∙ m + j − 1
  3. Ck = j ∙ n + i ∙ m − 1
  4. Dk = i ∙ (m − 1) + j
  5. Ek = (i − 1) ∙ m + j − 1
Revelar gabarito e comentário

GabaritoE — k = (i − 1) ∙ m + j − 1

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Mapeamento Matriz → Vetor (Row-Major)

Gabarito: letra E. Para armazenar uma matriz M de n linhas e m colunas em um vetor A com indexação iniciando em 0, mantendo linhas contíguas, o índice k do elemento M[i,j] (com i e j começando em 1) é dado por:

k=(i1)m+(j1)k = (i-1) \cdot m + (j-1)

A alternativa E é a única que reproduz essa fórmula.

A banca testa o entendimento de que o número de colunas (m) define o salto entre linhas, e não o número de linhas (n). A principal armadilha é trocar m por n ou usar i e j sem os devidos deslocamentos.

  1. 1Matriz M[n×m], índices i,j (base 1)
  2. 2Deslocamento de (i-1) linhas completas
  3. 3Cada linha tem m elementos
  4. 4Soma (j-1) posições na linha
  5. 5k = (i-1)·m + (j-1)
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Usa o número de linhas n no lugar do número de colunas m: k=(i1)n+j1k = (i-1) \cdot n + j - 1. Isso colocaria elementos de linhas diferentes em posições erradas.

Alternativa B — ❌ Incorreta

Começa com imi \cdot m em vez de (i1)m(i-1) \cdot m. Para i=1, j=1, resultaria em k = m (deveria ser 0).

Alternativa C — ❌ Incorreta

Mistura ambos os índices: k=jn+im1k = j \cdot n + i \cdot m - 1. Não segue a lógica de varredura por linhas.

Alternativa D — ❌ Incorreta

Usa i(m1)+ji \cdot (m-1) + j. Para i=1, j=1, resulta em k = (m-1)+1 = m (deveria ser 0). Além disso, não subtrai 1 de j.

Alternativa E — ✅ Correta ⟵ GABARITO

Exatamente k=(i1)m+j1k = (i-1) \cdot m + j - 1. Corresponde ao deslocamento de (i-1) linhas completas (cada uma com m elementos) mais (j-1) posições dentro da linha.

PEGA ESSA DICA!

Memorize a fórmula genérica para armazenamento row-major com indexação base 0: k=(ii0)colunas+(jj0)k = (i - i_0) \cdot colunas + (j - j_0), onde i0i_0 e j0j_0 são os índices iniciais da matriz (aqui ambos 1). A banca frequentemente troca linhas por colunas ou esquece de subtrair a base.

Gabarito: letra E

Link permanente: /questoes/qg129608