Introduction to Algorithms
3rd Edition
ISBN: 9780262033848
Author: Thomas H. Cormen, Ronald L. Rivest, Charles E. Leiserson, Clifford Stein
Publisher: MIT Press
expand_more
expand_more
format_list_bulleted
Question
Chapter 15.3, Problem 6E
Program Plan Intro
To explain the optimality of substructure of the finding the best sequence of exchanges having sequence
Expert Solution & Answer
Want to see the full answer?
Check out a sample textbook solutionStudents have asked these similar questions
We examine a problem in which we are handed a collection of coins and are tasked with forming a sum of money n out of the coins. The currency numbers are coins = c1, c2,..., ck, and each coin can be used as many times as we want. What is the bare amount of money required?If the coins are the euro coins (in euros) 1,2,5,10,20,50,100,200 and n = 520, we need at least four coins. The best option is to choose coins with sums of 200+200+100+20.
Suppose the economies of the world use a set of currencies C1, . . . , Cn; think of these as dollars, pounds, Bitcoin, etc. Your bank allows you to trade each currency Ci for any other currency Cj, and finds some way to charge you for this service. Suppose that for each ordered pair of currencies (Ci, Cj ), the bank charges a flat fee of fij > 0 dollars to exchange Ci for Cj (regardless of the quantity of currency being exchanged).
Describe an algorithm which, given a starting currency Cs, a target currency Ct, and a list of fees fij for all i, j ∈ {1, . . . , n}, computes the cheapest way (that is, incurring the least in fees) to exchange all of our currency in Cs into currency Ct. Also, justify the its runtime.
[A description or pseudocode (either is OK) of the algorithm, as well as a brief justification of its runtime.]
Consider the problem of making change for n cents using the fewest number of coins. Assume that we live in a country where coins come in k dierent denominations c1, c2, . . . , ck, such that the coin values are positive integers, k ≥ 1, and c1 = 1, i.e., there are pennies, so there is a solution for every value of n. For example, in case of the US coins, k = 4, c1 = 1, c2 = 5, c3 = 10, c4 = 25, i.e., there are pennies, nickels, dimes, and quarters. To give optimal change in the US for n cents, it is sufficient to pick as many quarters as possible, then as many dimes as possible, then as many nickels as possible, and nally give the rest in pennies.
Design a bottom-up (non-recursive) O(nk)-time algorithm that makes change for any set of k different coin denominations. Write down the pseudocode and analyze its running time. Argue why your choice of the array and the order in which you fill in the values is the correct one. Notice how it is a lot easier to analyze the running time of…
Chapter 15 Solutions
Introduction to Algorithms
Ch. 15.1 - Prob. 1ECh. 15.1 - Prob. 2ECh. 15.1 - Prob. 3ECh. 15.1 - Prob. 4ECh. 15.1 - Prob. 5ECh. 15.2 - Prob. 1ECh. 15.2 - Prob. 2ECh. 15.2 - Prob. 3ECh. 15.2 - Prob. 4ECh. 15.2 - Prob. 5E
Ch. 15.2 - Prob. 6ECh. 15.3 - Prob. 1ECh. 15.3 - Prob. 2ECh. 15.3 - Prob. 3ECh. 15.3 - Prob. 4ECh. 15.3 - Prob. 5ECh. 15.3 - Prob. 6ECh. 15.4 - Prob. 1ECh. 15.4 - Prob. 2ECh. 15.4 - Prob. 3ECh. 15.4 - Prob. 4ECh. 15.4 - Prob. 5ECh. 15.4 - Prob. 6ECh. 15.5 - Prob. 1ECh. 15.5 - Prob. 2ECh. 15.5 - Prob. 3ECh. 15.5 - Prob. 4ECh. 15 - Prob. 1PCh. 15 - Prob. 2PCh. 15 - Prob. 3PCh. 15 - Prob. 4PCh. 15 - Prob. 5PCh. 15 - Prob. 6PCh. 15 - Prob. 7PCh. 15 - Prob. 8PCh. 15 - Prob. 9PCh. 15 - Prob. 10PCh. 15 - Prob. 11PCh. 15 - Prob. 12P
Knowledge Booster
Similar questions
- Consider the problem of making change for n cents using the fewest number of coins. Assume that we live in a country where coins come in k dierent denominations c1, c2, . . . , ck, such that the coin values are positive integers, k ≥ 1, and c1 = 1, i.e., there are pennies, so there is a solution for every value of n. For example, in case of the US coins, k = 4, c1 = 1, c2 = 5, c3 = 10, c4 = 25, i.e., there are pennies, nickels, dimes, and quarters. To give optimal change in the US for n cents, it is sufficient to pick as many quarters as possible, then as many dimes as possible, then as many nickels as possible, and nally give the rest in pennies. Design a bottom-up (non-recursive) O(nk)-time algorithm that makes change for any set of k different coin denominations. Write down the pseudocode and analyze its running time. Argue why your choice of the array and the order in which you ll in the values is the correct one.arrow_forwardConsider the problem of making change for n cents using the fewest number of coins. Assume that we live in a country where coins come in k dierent denominations c1, c2, . . . , ck, such that the coin values are positive integers, k ≥ 1, and c1 = 1, i.e., there are pennies, so there is a solution for every value of n. For example, in case of the US coins, k = 4, c1 = 1, c2 = 5, c3 = 10, c4 = 25, i.e., there are pennies, nickels, dimes, and quarters. To give optimal change in the US for n cents, it is sufficient to pick as many quarters as possible, then as many dimes as possible, then as many nickels as possible, and nally give the rest in pennies. Prove that the coin changing problem exhibits optimal substructure. Design a recursive backtracking (brute-force) algorithm that returns the minimum number of coins needed to make change for n cents for any set of k different coin denominations. Write down the pseudocode and prove that your algorithm is correct.arrow_forwardSuppose we have a nice young couple who borrow $700000 from the bank, at an annual interest rate of3.124%. The mortgage is a 30 year loan, so they need to pay it off within 360 months total. Our happycouple decide to set their monthly mortgage payment at $2000 per month. Will they pay off the loan intime or not?Note that the monthly balance will be calculated asbalance = (im × previous balance) - monthly paymentwhere the convert annual interest to a monthly multiplier im is calculated as im = (1 +i)1/12 and i = annualinterest rate.Write a loop for track the total payment in 360 months so that we can evaluate if the couple can pay off theloan. Write in R Please and thank you.arrow_forward
- Consider the following game between two players: Both players simultaneously declare "one" or "two". Player 1 wins if the sum of the two declared numbers is odd and Player 2 wins if the sum is even. In either case the loser is obliged to pay the winner (in tokens) the sum of the two declared numbers. So Player 1 may have to pay 2 or 4 tokens or may win 3 tokens. You can imagine a single session between two players involving many games. At the end of a session, one player may have won many tokens from the other. Write a computer program in Java that allows a user to play a session (many games) against the computer. Both players should begin with 0 tokens and play until the human wants to quit. (Note: this means that one player will have a negative amount of tokens at the end and one player will have a positive amount.) When the human quits, the number of tokens each player has should be displayed before ending the session. The human should be given the choice to be either the "odd" or…arrow_forwardYou are given a grid having N rows and M columns. A grid square can either be blocked or empty. Blocked squares are represented by a '#' and empty squares are represented by '.'. Find the number of ways to tile the grid using L shaped bricks. A L brick has one side of length three units while other of length 2 units. All empty squares in the grid should be covered by exactly one of the L shaped tiles, and blocked squares should not be covered by any tile. The bricks can be used in any orientation (they can be rotated or flipped). Input Format The first line contains the number of test cases T. T test cases follow. Each test case contains N and M on the first line, followed by N lines describing each row of the grid. Constraints 1 <= T <= 501 <= N <= 201 <= M <= 8Each grid square will be either '.' or '#'. Output Format Output the number of ways to tile the grid. Output each answer modulo 1000000007. Sample Input 3 2 4 .... .... 3 3 ...…arrow_forward[Medium] Suppose, you have been given a non-negative integer which is the height of a ‘house of cards’. To build such a house you at-least require 8 cards. To increase the level (or height) of that house, you would require four sides and a base for each level. Therefore, for the top level, you would require 8 cards and for each of the rest of the levels below you would require 5 extra cards. If you were asked to build level one only, you would require just 8 cards. Of course, the input can be zero; in that case, you do not build a house at all. Complete the recursive method below to calculate the number of cards required to build a ‘house of cards’ of specific height given by the parameter. public int hocBuilder (int height){ // TO DO } OR def hocBuilder(height):arrow_forward
- You are a spy, and, conveniently, have a library with an infinite number of books at your disposal. Your operator also has such a library at his disposal. You have agreed to use Lord of the Rings as a one-time pad. Explain how you could use these assets to generate an infinitely long one-time pad.arrow_forwardAlice wants Bob (the Bank) to sign a cheque, c. She has Bob's public key e and modulus N, and chooses a random number r such that gcd(r,N) = 1. She computes re (mod N) and then multiplies the cheque, c, by this number (mod N) and sends the resulting message off to Bob to be signed. When she receives his reply, m, what should she do with it to produce the signed cheque? Select one: a. Divide the reply, m, by rd. b. Divide the reply, m, by r. c. Divide the reply, m, by re. d. Nothing - the reply is the signed chequearrow_forwardAlice wants Bob (the Bank) to sign a cheque, c. She has Bob's public key e and modulus N, and chooses a random number r such that gcd(r,N) = 1. She computes re (mod N) and then multiplies the cheque, c, by this number (mod N) and sends the resulting message off to Bob to be signed. When she receives his reply, m, what should she do with it to produce the signed cheque? Select one: a. Divide the reply, m, by rd. b. Divide the reply, m, by r. c. Divide the reply, m, by re. No - that won't do it. d. Nothing - the reply is the signed chequearrow_forward
- Let n be the product of two large primes. Alice wants to send a message m to Bob, where gcd(m, n) = 1. Alice and Bob choose integers a and b that are relatively prime to Φ(n). Alice computes c ≡ ma (mod n) and sends c to Bob. Bob computes d ≡ cb (mod n) and sends d back to Alice. Since Alice knows a, she finds a1 such that aa1 ≡ 1 (mod Φ(n)). Then she computes e ≡ da1 (mod n) and sends e to Bob. Explain what Bob must do to obtain m and show that this works.arrow_forwardSuppose 2n people come to the game and every individual pays for their own "ticket" and that by the end of the evening there were exactly n with 50 Dhs notes and exactly n with 100 Dhs notes. We want to think about different the implications of them arriving in different orders. For example, if all the people with 100s arrived first then we would need to issue 50 IOUs(I Own You). Draw a flow chart and answer by logic and math.arrow_forwardAlice has a wallet with exactly 10 Ether in it, and sends 10 Ether to Bob. In order for this transaction to be mined, what must be true? The gas price was set to zero by Alice Alice already had gas in his account. The gas price was set to zero by Bob Bob already has gas in his accountarrow_forward
arrow_back_ios
SEE MORE QUESTIONS
arrow_forward_ios
Recommended textbooks for you
- Operations Research : Applications and AlgorithmsComputer ScienceISBN:9780534380588Author:Wayne L. WinstonPublisher:Brooks ColeC++ Programming: From Problem Analysis to Program...Computer ScienceISBN:9781337102087Author:D. S. MalikPublisher:Cengage Learning
Operations Research : Applications and Algorithms
Computer Science
ISBN:9780534380588
Author:Wayne L. Winston
Publisher:Brooks Cole
C++ Programming: From Problem Analysis to Program...
Computer Science
ISBN:9781337102087
Author:D. S. Malik
Publisher:Cengage Learning