了解如何使用Python中的回憶有效地解決“硬幣變化問題”,並有明確的解釋和實際示例。 --- This video is based on the question https://stackoverflow.com/q/63992253/ asked by the user 'shubhamprashar' ( https://stackoverflow.com/u/14304456/ ) and on the answer https://stackoverflow.com/a/63993950/ provided by the user 'Stef' ( https://stackoverflow.com/u/3080723/)在“堆棧溢出”網站上。感謝這些出色的用戶和Stackexchange社區的貢獻。請訪問這些鏈接以獲取原始內容和更多詳細信息,例如替代解決方案,有關主題,評論,修訂歷史的最新更新/開發。 4.0'(https://creativecommons.org/licenses/by-sa/4.0/)許可證和原始答案帖子在“ CC BY-SA 4.0'(https://creativecommons.org/licenses/by-sa/4.0/)下。如果您似乎有什麼事,請隨時用vlogize [at] gmail [dot] com寫信給我。 ---使用回憶解決硬幣變更問題的硬幣變更問題是一個經常出現的經典挑戰,例如編碼訪談,例如亞馬遜進行的訪談。從本質上講,問題要求您使用指定的硬幣派別確定彌補給定目標量所需的最小硬幣數量。這個問題可能會變得複雜,尤其是當您試圖找到最有效的解決方案時。在這篇文章中,我們將使用記憶探索一種有效的方法解決此問題的方法,這是一種幫助我們避免冗餘計算的技術。問題陳述給出了目標數量和硬幣派別列表,您需要找到實現該目標所需的最小硬幣數量。例如,如果您的目標是74,並且您擁有面額1、5、10和25的硬幣,則您想發現可以組合的最少的硬幣以達到總金額。紀念解決方案使用回憶解決硬幣變化問題的喜悅在於其效率。標準遞歸方法可能會導致廣泛的重計,這可以減慢您的程序。以下是我們的問題採用回憶的功能:[[請參閱視頻以顯示此文本或代碼代碼段]]設置參數以成功運行此功能,首先需要初始化參數:目標金額:目標金額:您想要達到的數量,例如74。COIN。幣面額:硬幣清單,例如[1,5,5,5,5,10,25]。已知結果:初始化為零的陣列,該陣列先前計算出的結果。這對於記憶的工作至關重要。您將如何調用該函數:[[請參閱視頻以顯示此文本或代碼代碼段]]為什麼要用零來初始化nowne_results?您可能想知道為什麼我們以長度為目標 + 1的零初始化已知_RESULTS。為什麼不從一個空列表開始?當算法嘗試訪問不存在的索引時,使用空列表將導致錯誤:使用已知_RESULTS = [],您無法從0到目標訪問任何索引。例如,嘗試a [3] = 1會拋出indexError。使用nower_results = [0] *(目標 + 1),您正在創建一個預先定義所需大小的列表。這樣可以確保所有索引均可訪問,從而避免運行時錯誤和處理結果中不必要的複雜性。結論以適當尺寸的nower_result陣列開始,不僅可以防止錯誤,而且可以增強您的算法性能。通過緩存結果,利用回憶進行硬幣變化問題有效地減少了計算時間,從而可以在需要時快速訪問。總而言之,回憶簡化了硬幣變更問題的編碼和執行方面,使其成為實現所需解決方案的高效方法。愉快的編碼!