InicioProgramación dinámica
Programación dinámica
Subproblemas solapados: resuelve cada uno una vez y reutilízalo siempre.
65 mostrados
- FundamentalsSubproblemas solapados · una tabla que rellenas una sola vezanimadosFácil
- Solving a Question with DPEstado → recurrencia → caso base → orden → respuestaanimadosFácil
- Climbing Stairsways(i) = ways(i−1) + ways(i−2) · FibonaccianimadosFácil
- Maximum Subarraycur = máx(nums[i], cur + nums[i]) · KadaneanimadosMedia
- House Robberdp[i] = máx(dp[i−1], dp[i−2] + nums[i])animadosMedia
- Coin Changedp[a] = 1 + mín(dp[a − moneda]) · el menor número de monedasanimadosMedia
- Longest Common SubsequenceDP en cuadrícula · coincide → diagonal+1, si no máx(arriba, izquierda)animadosMedia
- Unique PathsDP en cuadrícula · dp[i][j] = dp[i−1][j] + dp[i][j−1]animadosMedia
- Longest Increasing SubsequencePatience sorting · O(n log n)animadosMedia
- Word Breakdp[i] = ¿se puede partir s[0..i) en palabras del diccionario?animadosMedia
- Problemas de práctica
- Frog JumpLo mejor entre avanzar uno o dosanimadosMedia
- Frog jump with K distancesLo mejor de los k pasos anterioresanimadosMedia
- Maximum sum of non adjacent elementsTómalo y sáltate uno, o sáltateloanimadosMedia
- Ninja's trainingEl estado incluye lo que hiciste ayerMedia
- Grid Unique Paths : DP on GridsCaminos hasta aquí = caminos de arriba + caminos de la izquierdaanimadosMedia
- Unique paths IIUn obstáculo aporta cero caminosanimadosMedia
- Minimum Falling Path SumLo mejor de las tres celdas de arribaMedia
- TriangleRellena hacia arriba desde la baseMedia
- Ninja and his FriendsDos posiciones, una fila compartidaMedia
- Subset sum equal to targetTomar o saltar, indexado por el objetivo restanteanimadosDifícil
- Partition equal subset sumSuma de subconjunto para la mitad del totalanimadosDifícil
- Partition a set into two subsets with minimum absolute sum differenceEncuentra todas las sumas de subconjunto alcanzablesanimadosDifícil
- Count subsets with sum KSuma las dos ramas en vez de aplicarles ORanimadosDifícil
- Count partitions with given differenceResuelve para la suma de un subconjuntoanimadosDifícil
- Assign CookiesOrdena ambos y empareja con avidezFácil
- Minimum CoinsIlimitado: quédate en la misma monedaanimadosDifícil
- Target sumLos signos se convierten en una elección de subconjuntoanimadosDifícil
- Coin Change 2Las monedas en el bucle exterior, o contarás ordenacionesanimadosDifícil
- Unbounded knapsackTomar un objeto no lo consumeanimadosDifícil
- Rod Cutting ProblemUna mochila ilimitada disfrazadaanimadosDifícil
- Print Longest Common SubsequenceRecorre la tabla hacia atrásanimadosDifícil
- Longest common substringVuelve a cero cuando no coincidaanimadosDifícil
- Longest palindromic subsequenceLa LCS de la cadena con su inversaanimadosDifícil
- Minimum insertions to make string palindromeConserva el núcleo palindrómico más largoanimadosDifícil
- Minimum insertions or deletions to convert string A to BTodo lo que queda fuera de la LCS tiene que cambiaranimadosDifícil
- Shortest common supersequenceAmbas cadenas, compartiendo la LCS una sola vezanimadosDifícil
- Distinct subsequencesEmpareja u omite el carácter de sanimadosDifícil
- Edit distanceInsertar, borrar o sustituir: quédate con lo más baratoanimadosDifícil
- Wildcard matching'*' consume un carácter o ningunoanimadosDifícil
- Best time to buy and sell stockLo más barato hasta ahora, el mejor beneficio hasta ahoraanimadosMedia
- Best time to buy and sell stock IIRecoge cada subidaMedia
- Best time to buy and sell stock IIICuatro estados a lo largo del díaMedia
- Best time to buy and sell stock IVLa máquina de cuatro estados, generalizada a kMedia
- Best Time to Buy and Sell Stock with CooldownTres estados: con acciones, vendido y libreMedia
- Best time to buy and sell stock with transaction feesCobra la comisión una vez por transacciónMedia
- Print Longest Increasing SubsequenceGuarda un predecesor junto a cada longitudanimadosMedia
- Largest Divisible SubsetOrdena y luego aplica LIS con una prueba de divisibilidadanimadosMedia
- Longest String ChainOrdena por longitud y extiende un carácter cada vezanimadosMedia
- Longest Bitonic SubsequenceLIS por la izquierda, LIS por la derechaanimadosMedia
- Number of Longest Increasing SubsequencesLleva un conteo junto a cada longitudanimadosMedia
- Matrix chain multiplicationPrueba todos los puntos de corteDifícil
- Minimum cost to cut the stickDP de intervalos sobre las posiciones de corteDifícil
- Burst balloonsElige el globo que se revienta el últimoDifícil
- Different Ways to Evaluate a Boolean ExpressionCuenta por separado las formas verdaderas y las falsasMedia
- Palindrome partitioning IICorta allí donde el prefijo sea un palíndromoDifícil
- Partition Array for Maximum SumPrueba todas las longitudes de grupo que terminan aquíMedia
- Maximum Rectangle Area with all 1's|Un histograma por filaDifícil
- Count Square Submatrices with All Ones|Cada celda cuenta los cuadrados que terminan ahíFácil
- Solving a Question with Dynamic ProgrammingEstado, recurrencia, caso base y ordenanimadosMedia
- Counting BitsReutiliza la respuesta de la mitad del númeroMedia
- Decode WaysUn dígito o dos, si es válidoMedia
- Maximal SquareLa misma recurrencia, tomando el máximoMedia
- Maximum Profit in Job SchedulingOrdena por el final y busca binariamente el último trabajo compatibleMedia
- Paint HouseEl mejor coste por color y por casaMedia
- Paint House IISigue los dos mejores colores anterioresMedia