Programação dinâmica, inglês: Programação Dinâmica, conhecida como DP, se um problema tiver muitos subproblemas sobrepostos, usar a programação dinâmica é o mais eficaz. Cada estado na programação dinâmica deve ser derivado do estado anterior, o que é diferente do ganancioso.O ganancioso não tem derivação de estado, mas seleciona diretamente o melhor do local.
Problemas resolvidos pela programação dinâmica
A programação dinâmica geralmente pode resolver os seguintes problemas:
- Problemas básicos : números de Fibonacci, subir escadas, caminhos diferentes, divisões de inteiros, diferentes árvores de busca binária, etc.
- Problema de mochila : 01 mochila, mochila completa, mochila múltipla, etc.
- Brigar e roubar casas : roubar e roubar casas, roubar e roubar casas||, roubar e roubar casas|||etc.
- Perguntas sobre ações : o melhor momento para comprar e vender ações, etc.
- Problemas de subsequência : subsequência (descontínua), subsequência (contínua), distância de edição, palíndromo, etc.
Modelo de programação dinâmica cinco etapas
- 1. Determine o significado da matriz dp e do subscrito.
- Em segundo lugar, determine a fórmula recursiva.
- 3. Como inicializar o array dp.
- Quarto, determine a ordem de passagem.
- 5. Dê um exemplo para deduzir o array dp (imprima o array dp).
Depuração de programação dinâmica
- Esta questão deu um exemplo para derivar a fórmula de transição de estado?
- Você imprimiu o log do array dp?
- A matriz dp impressa é a mesma esperada?