Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
What is DP | Intro to Dynamic Programming
Dynamic Programming
course content

Contenido del Curso

Dynamic Programming

Dynamic Programming

1. Intro to Dynamic Programming
2. Problems
3. Solutions

What is DP

Dynamic programming is a programming paradigm for a massive class of problems. It solves the problem by partitioning it into smaller subproblems and solving it to avoid double computing the same results. Thus, the optimal solution of the main problem depends on the optimal solution of its subproblems.

The simplest (even classic) example is solving the Fibonacci Numbers problem - find the n-th Fibonacci number. As you know, each next Fibonacci number is a sum of the previous two Fibonacci numbers. So, if we have some function fib(n) that returns n-th Fibonacci numbers, we can implement it like this:

12
def fib(n): return fib(n-1) + fib(n-2)
copy

Thus, to solve the problem of the n-th Fibonacci number, you should solve the fib(n-1) and fib(n-2) subproblems first. But we can solve both of these subproblems in the same way.

You can note that this recursion has no bottom yet, so we have to add the stop condition:

1234
def fib(n): if n <= 1: # Bottom return n return fib(n-1) + fib(n-2)
copy

You'll find some info about the main DP properties in the next two chapters.

Tarea

  1. Following the example, implement the function fib(n).
  2. Make function calls to check how it works.

The function calls are already in the task code; do not change them. Edit the fib(n) function only.

Tarea

  1. Following the example, implement the function fib(n).
  2. Make function calls to check how it works.

The function calls are already in the task code; do not change them. Edit the fib(n) function only.

Cambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones

¿Todo estuvo claro?

Sección 1. Capítulo 1
toggle bottom row

What is DP

Dynamic programming is a programming paradigm for a massive class of problems. It solves the problem by partitioning it into smaller subproblems and solving it to avoid double computing the same results. Thus, the optimal solution of the main problem depends on the optimal solution of its subproblems.

The simplest (even classic) example is solving the Fibonacci Numbers problem - find the n-th Fibonacci number. As you know, each next Fibonacci number is a sum of the previous two Fibonacci numbers. So, if we have some function fib(n) that returns n-th Fibonacci numbers, we can implement it like this:

12
def fib(n): return fib(n-1) + fib(n-2)
copy

Thus, to solve the problem of the n-th Fibonacci number, you should solve the fib(n-1) and fib(n-2) subproblems first. But we can solve both of these subproblems in the same way.

You can note that this recursion has no bottom yet, so we have to add the stop condition:

1234
def fib(n): if n <= 1: # Bottom return n return fib(n-1) + fib(n-2)
copy

You'll find some info about the main DP properties in the next two chapters.

Tarea

  1. Following the example, implement the function fib(n).
  2. Make function calls to check how it works.

The function calls are already in the task code; do not change them. Edit the fib(n) function only.

Tarea

  1. Following the example, implement the function fib(n).
  2. Make function calls to check how it works.

The function calls are already in the task code; do not change them. Edit the fib(n) function only.

Cambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones

¿Todo estuvo claro?

Sección 1. Capítulo 1
toggle bottom row

What is DP

Dynamic programming is a programming paradigm for a massive class of problems. It solves the problem by partitioning it into smaller subproblems and solving it to avoid double computing the same results. Thus, the optimal solution of the main problem depends on the optimal solution of its subproblems.

The simplest (even classic) example is solving the Fibonacci Numbers problem - find the n-th Fibonacci number. As you know, each next Fibonacci number is a sum of the previous two Fibonacci numbers. So, if we have some function fib(n) that returns n-th Fibonacci numbers, we can implement it like this:

12
def fib(n): return fib(n-1) + fib(n-2)
copy

Thus, to solve the problem of the n-th Fibonacci number, you should solve the fib(n-1) and fib(n-2) subproblems first. But we can solve both of these subproblems in the same way.

You can note that this recursion has no bottom yet, so we have to add the stop condition:

1234
def fib(n): if n <= 1: # Bottom return n return fib(n-1) + fib(n-2)
copy

You'll find some info about the main DP properties in the next two chapters.

Tarea

  1. Following the example, implement the function fib(n).
  2. Make function calls to check how it works.

The function calls are already in the task code; do not change them. Edit the fib(n) function only.

Tarea

  1. Following the example, implement the function fib(n).
  2. Make function calls to check how it works.

The function calls are already in the task code; do not change them. Edit the fib(n) function only.

Cambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones

¿Todo estuvo claro?

Dynamic programming is a programming paradigm for a massive class of problems. It solves the problem by partitioning it into smaller subproblems and solving it to avoid double computing the same results. Thus, the optimal solution of the main problem depends on the optimal solution of its subproblems.

The simplest (even classic) example is solving the Fibonacci Numbers problem - find the n-th Fibonacci number. As you know, each next Fibonacci number is a sum of the previous two Fibonacci numbers. So, if we have some function fib(n) that returns n-th Fibonacci numbers, we can implement it like this:

12
def fib(n): return fib(n-1) + fib(n-2)
copy

Thus, to solve the problem of the n-th Fibonacci number, you should solve the fib(n-1) and fib(n-2) subproblems first. But we can solve both of these subproblems in the same way.

You can note that this recursion has no bottom yet, so we have to add the stop condition:

1234
def fib(n): if n <= 1: # Bottom return n return fib(n-1) + fib(n-2)
copy

You'll find some info about the main DP properties in the next two chapters.

Tarea

  1. Following the example, implement the function fib(n).
  2. Make function calls to check how it works.

The function calls are already in the task code; do not change them. Edit the fib(n) function only.

Cambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
Sección 1. Capítulo 1
Cambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
We're sorry to hear that something went wrong. What happened?
some-alt