InícioProgramação dinâmica
Programação dinâmica
Subproblemas que se repetem — resolva cada um uma vez e reaproveite sempre.
65 mostrados
- FundamentalsSubproblemas que se repetem · uma tabela preenchida uma vezanimadosFácil
- Solving a Question with DPEstado → recorrência → caso base → ordem → respostaanimadosFácil
- Climbing Stairsways(i) = ways(i−1) + ways(i−2) · FibonaccianimadosFácil
- Maximum Subarraycur = máx(nums[i], cur + nums[i]) · KadaneanimadosMédio
- House Robberdp[i] = máx(dp[i−1], dp[i−2] + nums[i])animadosMédio
- Coin Changedp[a] = 1 + mín(dp[a − moeda]) · menor número de moedasanimadosMédio
- Longest Common SubsequenceDP em grade · casou → diagonal+1, senão máx(acima, esquerda)animadosMédio
- Unique PathsDP em grade · dp[i][j] = dp[i−1][j] + dp[i][j−1]animadosMédio
- Longest Increasing SubsequencePatience sorting · O(n log n)animadosMédio
- Word Breakdp[i] = dá para partir s[0..i) em palavras do dicionário?animadosMédio
- Problemas de prática
- Frog JumpO melhor entre avançar um ou doisanimadosMédio
- Frog jump with K distancesO melhor dos k passos anterioresanimadosMédio
- Maximum sum of non adjacent elementsPegue e pule um, ou pule esteanimadosMédio
- Ninja's trainingO estado inclui o que foi feito ontemMédio
- Grid Unique Paths : DP on GridsCaminhos até aqui = caminhos de cima + caminhos da esquerdaanimadosMédio
- Unique paths IIUm obstáculo contribui com zero caminhosanimadosMédio
- Minimum Falling Path SumA melhor das três células acimaMédio
- TrianglePreencha de baixo para cimaMédio
- Ninja and his FriendsDuas posições, uma linha em comumMédio
- Subset sum equal to targetPegar ou pular, indexado pelo alvo restanteanimadosDifícil
- Partition equal subset sumSoma de subconjunto para metade do totalanimadosDifícil
- Partition a set into two subsets with minimum absolute sum differenceEncontre todas as somas de subconjunto alcançáveisanimadosDifícil
- Count subsets with sum KSome os dois ramos em vez de aplicar ORanimadosDifícil
- Count partitions with given differenceResolva para a soma de um subconjuntoanimadosDifícil
- Assign CookiesOrdene os dois e case com ganânciaFácil
- Minimum CoinsIlimitado: fique na mesma moedaanimadosDifícil
- Target sumOs sinais viram uma escolha de subconjuntoanimadosDifícil
- Coin Change 2Moedas no laço externo, senão você conta ordenaçõesanimadosDifícil
- Unbounded knapsackPegar um item não o consomeanimadosDifícil
- Rod Cutting ProblemUma mochila ilimitada disfarçadaanimadosDifícil
- Print Longest Common SubsequencePercorra a tabela de trás para frenteanimadosDifícil
- Longest common substringZere quando não casaranimadosDifícil
- Longest palindromic subsequenceA LCS da cadeia com o inverso delaanimadosDifícil
- Minimum insertions to make string palindromeGuarde o maior núcleo palindrômicoanimadosDifícil
- Minimum insertions or deletions to convert string A to BTudo que está fora da LCS precisa mudaranimadosDifícil
- Shortest common supersequenceAs duas cadeias, compartilhando a LCS uma só vezanimadosDifícil
- Distinct subsequencesCase ou pule o caractere de sanimadosDifícil
- Edit distanceInserir, apagar ou trocar — fique com o mais baratoanimadosDifícil
- Wildcard matching'*' consome um caractere ou nenhumanimadosDifícil
- Best time to buy and sell stockO mais barato até agora, o melhor lucro até agoraanimadosMédio
- Best time to buy and sell stock IISome cada subidaMédio
- Best time to buy and sell stock IIIQuatro estados ao longo do diaMédio
- Best time to buy and sell stock IVA máquina de quatro estados, generalizada para kMédio
- Best Time to Buy and Sell Stock with CooldownTrês estados: com a ação, vendido, livreMédio
- Best time to buy and sell stock with transaction feesCobre a taxa uma vez por transaçãoMédio
- Print Longest Increasing SubsequenceGuarde um antecessor junto de cada comprimentoanimadosMédio
- Largest Divisible SubsetOrdene e depois faça LIS com um teste de divisibilidadeanimadosMédio
- Longest String ChainOrdene por comprimento e estenda um caractere por vezanimadosMédio
- Longest Bitonic SubsequenceLIS pela esquerda, LIS pela direitaanimadosMédio
- Number of Longest Increasing SubsequencesLeve uma contagem junto de cada comprimentoanimadosMédio
- Matrix chain multiplicationTente todos os pontos de corteDifícil
- Minimum cost to cut the stickDP de intervalos sobre as posições de corteDifícil
- Burst balloonsEscolha o balão que estoura por últimoDifícil
- Different Ways to Evaluate a Boolean ExpressionConte separadamente as formas verdadeiras e as falsasMédio
- Palindrome partitioning IICorte onde o prefixo for um palíndromoDifícil
- Partition Array for Maximum SumTente todos os tamanhos de grupo que terminam aquiMédio
- Maximum Rectangle Area with all 1's|Um histograma por linhaDifícil
- Count Square Submatrices with All Ones|Cada célula conta os quadrados que terminam aliFácil
- Solving a Question with Dynamic ProgrammingEstado, recorrência, caso base, ordemanimadosMédio
- Counting BitsReaproveite a resposta da metade do númeroMédio
- Decode WaysUm dígito ou dois, se for válidoMédio
- Maximal SquareA mesma recorrência, pegando o máximoMédio
- Maximum Profit in Job SchedulingOrdene pelo fim e busque binariamente o último trabalho compatívelMédio
- Paint HouseO menor custo por cor, para cada casaMédio
- Paint House IIAcompanhe as duas melhores cores anterioresMédio