בעיית החלפת מטבעות
שיעור 8 מתוך 15 בקורס תכנות דינמי 101 של Coddy.
בעיית החלפת המטבעות היא בעיה קלאסית בתכנות דינמי. בהינתן קבוצת מטבעות בערכים שונים וסכום כסף כולל, המשימה היא למצוא את מספר המטבעות המינימלי הדרוש להרכבת הסכום הנתון.
לדוגמה, נניח שיש לנו מטבעות בערכים [1, 5, 10] ואנחנו רוצים להרכיב את הסכום 15. מספר המטבעות המינימלי הדרוש יהיה 2 (מטבע של 10 ומטבע של 5).
כדי לפתור את הבעיה באמצעות תכנות דינמי, נוכל ליצור טבלה שבה השורות מייצגות את ערכי המטבעות והעמודות מייצגות את הסכומים מ-0 ועד לסכום הכולל הנתון. לאחר מכן נמלא את הטבלה מלמטה למעלה, על ידי חישוב מספר המטבעות המינימלי הדרוש להרכבת כל סכום, באמצעות המטבעות מכל ערך.
אתגר
בינוניכתבו תוכנית שמקבלת שתי קלטות: רשימה של ערכי מטבעות וסכום יעד, ומחזירה את המספר המינימלי של מטבעות הדרוש כדי להרכיב את סכום היעד.
לדוגמה, עבור הערכים [1, 5, 10] וסכום היעד 15, הפלט צריך להיות 2.
נסו בעצמכם
def min_coins(coins, target):
# כתבו כאן את הקודכל השיעורים ביחידה תכנות דינמי 101
תרגלו בעצמכם: קומפיילר Python אונליין