Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Overlapping Subproblems Property: Tabulation | Intro to Dynamic Programming
Dynamic Programming

bookOverlapping Subproblems Property: Tabulation

Tabulation

"First, solve all necessary subproblems, and then solve the main problem."

Such a principle is called the Bottom-Up approach. We start with trivial subproblems and move from the bottom to the answer. This principle also uses additional tables to store solutions.

Example

Let’s create an array dp to store the solutions. (dp can be a common name for data structure in a class of DP problems).

1234567891011121314
def fib(n): # Array declaration dp = [0]*(n+1) # Base case assignment dp[0] = 0 dp[1] = 1 # Calculating and storing the values for trivial cases for i in range(2 , n+1): dp[i] = dp[i-1] + dp[i-2] return dp[n]
copy

Since we know how to calculate the next element using the previous two elements, let's move from the pre-defined first two elements (base case) and figure out the solution for the 3rd sub-problem. After that, solve the 4th sub-problem using the 2nd and 3rd, and so on, until the last element.

Tehtävä

Swipe to start coding

Look at the following task code for the Fibonacci problem.

  1. Fix it to make the solution correct.
  2. Call the function for n = 16 and output the 16th Fibonacci number.

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 3
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

Tiivistä tämä luku

Explain code

Explain why doesn't solve task

close

Awesome!

Completion rate improved to 8.33

bookOverlapping Subproblems Property: Tabulation

Pyyhkäise näyttääksesi valikon

Tabulation

"First, solve all necessary subproblems, and then solve the main problem."

Such a principle is called the Bottom-Up approach. We start with trivial subproblems and move from the bottom to the answer. This principle also uses additional tables to store solutions.

Example

Let’s create an array dp to store the solutions. (dp can be a common name for data structure in a class of DP problems).

1234567891011121314
def fib(n): # Array declaration dp = [0]*(n+1) # Base case assignment dp[0] = 0 dp[1] = 1 # Calculating and storing the values for trivial cases for i in range(2 , n+1): dp[i] = dp[i-1] + dp[i-2] return dp[n]
copy

Since we know how to calculate the next element using the previous two elements, let's move from the pre-defined first two elements (base case) and figure out the solution for the 3rd sub-problem. After that, solve the 4th sub-problem using the 2nd and 3rd, and so on, until the last element.

Tehtävä

Swipe to start coding

Look at the following task code for the Fibonacci problem.

  1. Fix it to make the solution correct.
  2. Call the function for n = 16 and output the 16th Fibonacci number.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

close

Awesome!

Completion rate improved to 8.33
Osio 1. Luku 3
single

single

some-alt