0Pricing
Competitive Programming Academy · Aula

Contagem de Caminhos em uma Grade

Some os caminhos de um canto ao outro.

Contagem de Caminhos em uma Grade é uma aula grátis de Competitive Programming Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Competitive Programming Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Competitive Programming Academy inclui 4 aulas no total.

O problema clássico da grade

Você começa no canto superior esquerdo de uma grade e quer chegar ao canto inferior direito. Cada passo move-se para a direita ou para baixo. Quantos caminhos distintos existem?

Por que DP se encaixa

Toda célula pode ser alcançada a partir da célula acima ou da célula à esquerda. Essa sobreposição é exatamente o motivo pelo qual este é um problema de DP.

Defina o estado

Considere dp[i][j] como o número de maneiras de chegar à célula (i, j) a partir do início. Dar um nome claro ao estado é metade da batalha.

A transição

Você só chega vindo de cima ou da esquerda, portanto a contagem é a soma desses valores. Essa é a transição que conduz toda a tabela.

dp[i][j] = dp[i-1][j] + dp[i][j-1]

O caso base

A célula inicial tem exatamente uma maneira de ser alcançada: não fazer nada. Portanto, dp[0][0] vale 1 antes que você preencha qualquer outra célula.

dp[0][0] = 1

As bordas têm um caminho

As células da linha superior ou da coluna esquerda têm uma única rota direta. A contagem delas é sempre 1, pois um dos vizinhos está fora da grade.

Construa a tabela

Crie uma tabela de m por n preenchida com zeros. Definir o tamanho antecipadamente mantém a indexação organizada e evita surpresas.

dp = [[0] * n for _ in range(m)]

Preencha na ordem de leitura

Percorra primeiro as linhas e depois as colunas, de cima para baixo e da esquerda para a direita. Essa ordem garante que ambos os vizinhos estejam prontos antes de serem usados.

for i in range(m):
    for j in range(n):
        ...

A célula da resposta

Depois do preenchimento, a contagem de caminhos estará na última célula. A resposta é dp[m-1][n-1], o canto inferior direito.

answer = dp[m-1][n-1]

Economize memória com uma linha

Cada linha precisa apenas da linha acima, portanto você pode manter uma única linha e atualizá-la no próprio lugar. Isso reduz a memória para O(n).

row[j] += row[j-1]

O atalho matemático

Sem bloqueios, a resposta é um coeficiente binomial: escolha quais dos passos totais serão para baixo. A DP ainda é melhor quando surgem obstáculos.

Verificação rápida

Você está preenchendo dp[i][j] para uma célula interna livre. Qual fórmula está correta?

Recapitulação: contagem de caminhos

Defina dp como os caminhos até uma célula, atribua 1 a dp[0][0] e some a célula acima com a célula à esquerda. O canto contém a sua resposta. 🧭

Perguntas Frequentes

A aula “Contagem de Caminhos em uma Grade” é grátis?

Sim — o texto completo de “Contagem de Caminhos em uma Grade” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Competitive Programming Academy, atualize para CoddyKit PRO. O curso de Competitive Programming Academy inclui 4 aulas no total.

O que vou aprender em “Contagem de Caminhos em uma Grade”?

Some os caminhos de um canto ao outro. Você pratica Competitive Programming Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Competitive Programming Academy?

Nenhuma experiência prévia é necessária. Competitive Programming Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Contagem de Caminhos em uma Grade”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Competitive Programming Academy?

Sim. Cada aula de Competitive Programming Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Contagem de Caminhos em uma Grade
  2. Soma Mínima de Caminho com Obstáculos
  3. Maior Subsequência Comum
  4. Distância de Edição Passo a Passo
← Voltar para Competitive Programming Academy