DPChange (M, c, d): bestNumCoins [0] - 0 for m - 1 to M bestNumcoins (m] = inf for i - 1 to d if m >- c[i] if bestNumcoins (m-c[i]] + 1 < bestNumcoins (m] bestNumCoins (m] = bestNumCoins (m-c[i]] + 1 return bestNumCoins (M) a) Convert this pseudocode to Python. b) What is the runtime of this algorithm?

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question

as attached 

a and b, thank you 

### DPChange(M, c, d) Pseudocode

This pseudocode is used to find the minimum number of coins needed to make change for a given amount \( M \) using a list of coin denominations.

#### Pseudocode Explanation:

1. **Initialization:**
   - `bestNumCoins[0] = 0`: Set the base case for making change for 0 amount.
  
2. **Outer Loop (1 to M):**
   - For each amount \( m \) from 1 to \( M \), do the following:
     - Initialize `bestNumCoins[m] = inf` (infinity) to represent initially an impossible large number of coins.

3. **Inner Loop (1 to d):**
   - Iterate over each coin denomination.
   - **Check Condition:**
     - If the current amount \( m \) is greater than or equal to the coin denomination \( c[i] \):
       - Compare and update the best number of coins:
         ``` 
         if bestNumCoins[m-c[i]] + 1 < bestNumCoins[m]:
             bestNumCoins[m] = bestNumCoins[m-c[i]] + 1
         ```
     - This checks if using the current coin \( c[i] \) results in fewer coins than previously computed for amount \( m \).

4. **Return Result:**
   - Return `bestNumCoins[M]` which contains the minimum number of coins needed for amount \( M \).

### Questions:

a) **Convert this pseudocode to Python.**

```python
def DPChange(M, c):
    bestNumCoins = [float('inf')] * (M + 1)
    bestNumCoins[0] = 0
    for m in range(1, M + 1):
        for coin in c:
            if m >= coin:
                if bestNumCoins[m - coin] + 1 < bestNumCoins[m]:
                    bestNumCoins[m] = bestNumCoins[m - coin] + 1
    return bestNumCoins[M]
```

b) **What is the runtime of this algorithm?**

The runtime of this algorithm is \( O(M \cdot d) \) where \( M \) is the amount for which we are making change and \( d \) is the number of different coin denominations. This is because for each amount up to \( M \), we iterate through each denomination.
Transcribed Image Text:### DPChange(M, c, d) Pseudocode This pseudocode is used to find the minimum number of coins needed to make change for a given amount \( M \) using a list of coin denominations. #### Pseudocode Explanation: 1. **Initialization:** - `bestNumCoins[0] = 0`: Set the base case for making change for 0 amount. 2. **Outer Loop (1 to M):** - For each amount \( m \) from 1 to \( M \), do the following: - Initialize `bestNumCoins[m] = inf` (infinity) to represent initially an impossible large number of coins. 3. **Inner Loop (1 to d):** - Iterate over each coin denomination. - **Check Condition:** - If the current amount \( m \) is greater than or equal to the coin denomination \( c[i] \): - Compare and update the best number of coins: ``` if bestNumCoins[m-c[i]] + 1 < bestNumCoins[m]: bestNumCoins[m] = bestNumCoins[m-c[i]] + 1 ``` - This checks if using the current coin \( c[i] \) results in fewer coins than previously computed for amount \( m \). 4. **Return Result:** - Return `bestNumCoins[M]` which contains the minimum number of coins needed for amount \( M \). ### Questions: a) **Convert this pseudocode to Python.** ```python def DPChange(M, c): bestNumCoins = [float('inf')] * (M + 1) bestNumCoins[0] = 0 for m in range(1, M + 1): for coin in c: if m >= coin: if bestNumCoins[m - coin] + 1 < bestNumCoins[m]: bestNumCoins[m] = bestNumCoins[m - coin] + 1 return bestNumCoins[M] ``` b) **What is the runtime of this algorithm?** The runtime of this algorithm is \( O(M \cdot d) \) where \( M \) is the amount for which we are making change and \( d \) is the number of different coin denominations. This is because for each amount up to \( M \), we iterate through each denomination.
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY