Updating lazy-frog files
This commit is contained in:
BIN
decode-ways/arthur-dolival-decode-ways-tutorial.pdf
Normal file
BIN
decode-ways/arthur-dolival-decode-ways-tutorial.pdf
Normal file
Binary file not shown.
74
decode-ways/arthur-dolival-decode-ways-tutorial.tex
Normal file
74
decode-ways/arthur-dolival-decode-ways-tutorial.tex
Normal file
@@ -0,0 +1,74 @@
|
||||
\documentclass[10pt]{article}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage{amsmath,amsthm,amssymb}
|
||||
\usepackage{fullpage}
|
||||
\usepackage{url}
|
||||
\pagenumbering{gobble}
|
||||
\usepackage{hyperref}
|
||||
\usepackage{graphicx}
|
||||
\input{statement/preamble.tex}
|
||||
|
||||
\title{ Tutorial: Decodificando Mensagens}
|
||||
\author{Leetcode 91}
|
||||
\date{}
|
||||
\begin{document}
|
||||
\maketitle
|
||||
O problema pode ser resolvido utilizando uma abordagem de \textbf{programação dinâmica}, na qual calculamos, passo a passo, o número de formas possíveis de decodificar a sequência até cada posição.
|
||||
|
||||
\subsection*{Modelagem}
|
||||
|
||||
Cada dígito (ou par de dígitos consecutivos) da sequência pode representar uma letra do alfabeto latino, seguindo a regra:
|
||||
\[
|
||||
1 \rightarrow A, \quad 2 \rightarrow B, \quad \ldots, \quad 26 \rightarrow Z
|
||||
\]
|
||||
Portanto, precisamos contar todas as maneiras válidas de interpretar a sequência numérica, considerando que apenas combinações entre $1$ e $26$ são válidas.
|
||||
|
||||
\subsection*{Definição da DP}
|
||||
|
||||
Definimos uma estrutura de DP com dois estados para cada posição $i$:
|
||||
\begin{itemize}
|
||||
\item $dp[i][0]$: número de mensagens possíveis terminando no caractere $i$ \textbf{quando o dígito atual não é concatenado} com o anterior;
|
||||
\item $dp[i][1]$: número de mensagens possíveis terminando no caractere $i$ \textbf{quando o dígito atual é concatenado} com o anterior.
|
||||
\end{itemize}
|
||||
|
||||
\subsection*{Função de Transição}
|
||||
|
||||
A função de transição é definida da seguinte forma:
|
||||
\[
|
||||
dp[i][0] =
|
||||
\begin{cases}
|
||||
dp[i - 1][0] + dp[i - 1][1], & \text{se } 1 \leq s[i] \leq 9 \\[6pt]
|
||||
0, & \text{caso contrário}
|
||||
\end{cases}
|
||||
\]
|
||||
|
||||
\[
|
||||
dp[i][1] =
|
||||
\begin{cases}
|
||||
dp[i - 2][0] + dp[i - 2][1], & \text{se } 10 \leq 10 \cdot s[i-1] + s[i] \leq 26 \\[6pt]
|
||||
0, & \text{caso contrário}
|
||||
\end{cases}
|
||||
\]
|
||||
|
||||
\subsection*{Casos Base}
|
||||
|
||||
Os casos base são:
|
||||
\[
|
||||
dp[0][0] = 1, \quad dp[0][1] = 0, \quad dp[1][0] = 1, \quad dp[1][1] = 0
|
||||
\]
|
||||
Isso ocorre porque, antes de processar qualquer caractere, há exatamente uma maneira “vazia” de formar uma mensagem válida, e o primeiro dígito pode, no máximo, representar uma única letra isolada.
|
||||
|
||||
\subsection*{Resposta Final}
|
||||
|
||||
O total de formas possíveis de decodificar a sequência é dado por:
|
||||
\[
|
||||
dp[n][0] + dp[n][1]
|
||||
\]
|
||||
onde $n$ é o comprimento da sequência de entrada.
|
||||
|
||||
\subsection*{Complexidade}
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{Tempo:} $O(n)$, pois cada caractere é processado uma única vez;
|
||||
\item \textbf{Espaço:} $O(n)$, podendo ser otimizado para $O(1)$ ao armazenar apenas os últimos dois estados.
|
||||
\end{itemize}\end{document}
|
||||
BIN
decode-ways/arthur-dolival-decode-ways.pdf
Normal file
BIN
decode-ways/arthur-dolival-decode-ways.pdf
Normal file
Binary file not shown.
39
decode-ways/arthur-dolival-decode-ways.tex
Normal file
39
decode-ways/arthur-dolival-decode-ways.tex
Normal file
@@ -0,0 +1,39 @@
|
||||
\documentclass{maratona}
|
||||
|
||||
\begin{document}
|
||||
\begin{ProblemaAutor}{}{Decodificando Mensagens}{1}{256}{Leetcode 91}
|
||||
|
||||
O problema consiste em determinar o número de maneiras possíveis de decodificar uma sequência numérica, onde cada número ou par de números representa uma letra do alfabeto latino.
|
||||
A correspondência segue a regra \( 1 \rightarrow A, 2 \rightarrow B, \ldots, 26 \rightarrow Z \).
|
||||
Cada dígito ou combinação de dois dígitos consecutivos pode ser convertido em uma letra válida, desde que a sequência resultante obedeça às restrições de decodificação.
|
||||
O objetivo é calcular o total de maneiras diferentes de decodificar a sequência numérica fornecida.
|
||||
|
||||
\Entrada
|
||||
|
||||
A entrada é composta por duas linhas.
|
||||
A primeira linha contém um inteiro \( n \) (\( 1 \leq n \leq 100 \)), representando o tamanho da sequência numérica.
|
||||
A segunda linha contém uma sequência de digitos de \( s \) de comprimento \( n \).
|
||||
|
||||
\Saida
|
||||
|
||||
A saída deve conter um único inteiro, representando o número total de maneiras possíveis de decodificar a sequência numérica \( s \) de acordo com o mapeamento \( 1 \rightarrow A, 2 \rightarrow B, \ldots, 26 \rightarrow Z \).
|
||||
|
||||
\ExemploEntrada
|
||||
|
||||
\begin{Exemplo}
|
||||
\texttt{2} & \texttt{2}\\
|
||||
\texttt{12} & \\
|
||||
\rowcolor{gray!20}\texttt{3} & \texttt{3}\\
|
||||
\rowcolor{gray!20}\texttt{226} & \\
|
||||
\texttt{2} & \texttt{0}\\
|
||||
\texttt{06} & \\
|
||||
\end{Exemplo}
|
||||
|
||||
|
||||
|
||||
\Notas
|
||||
|
||||
Para a sequência \( s = "12" \), existem duas decodificações possíveis: "AB" (1, 2) e "L" (12).
|
||||
Para a sequência \( s = "226" \), há três decodificações possíveis: "BZ" (2, 26), "VF" (22, 6) e "BBF" (2, 2, 6).
|
||||
Para a sequência \( s = "06" \), não há nenhuma forma válida de decodificação.\end{ProblemaAutor}
|
||||
\end{document}
|
||||
Reference in New Issue
Block a user