Menu
CoddyTech

Rod Cutting Problem

בינוניתכנון דינמיpython iconjava iconcpp iconc iconjs icon+10

יש לך מוט באורך n, כאשר n = prices.length. חתיכה באורך k נמכרת במחיר prices[k-1]. אפשר לחתוך את המוט לחתיכות באורכים שלמים, בכמות שרוצים, או למכור אותו כחתיכה אחת. החזר את הסכום המרבי שאפשר להרוויח ממכירת כולו.

פונקציה

cutRod(prices: integer-array) → integer
pricesinteger-array
prices[k-1] הוא המחיר של חתיכה באורך k; אורך המוט הוא prices.length
מחזירהinteger
הסכום המרבי שהחכה כולה יכולה להרוויח

אילוצים

  • 1 ≤ prices.length ≤ 1000
  • 1 ≤ prices[i] ≤ 105

דוגמאות

קלט
prices = [2, 5, 7, 8]
פלט
10
הסבר
שני חלקים באורך 2 נמכרים ב־5 + 5 = 10. מכירת המוט בשלמותו מניבה 8, וחלק באורך 1 יחד עם חלק באורך 3 מניבים 2 + 7 = 9.
challenge icon

שאלת המשך

מה אם מותר לך לחתוך את המוט לכל היותר m פעמים? מה כל תא בטבלה צריך לדעת במקרה כזה?

איפוס הקוד
def cutRod(prices):
    # כתבו כאן את הקוד

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנט

prices = [2, 5, 7, 8]

הפלט הצפוי

10