मैं कुछ गतिशील प्रोग्रामिंग समस्याओं की समीक्षा कर रहा हूं, और परिवर्तन करने के लिए छोटी संख्या में सिक्के खोजने के संबंध में मुझे कुछ कोड के आसपास अपने सिर को लपेटने में कठिनाई हुई है।गतिशील प्रोग्रामिंग इष्टतम सिक्का बदलें
कहें कि हमारे पास 25, 10, और 1 के सिक्के हैं, और हम 30 के लिए परिवर्तन कर रहे हैं। लालची 25 और 5 (1) वापस आ जाएगी जबकि इष्टतम समाधान 3 (10) वापस आ जाएगा।
def dpMakeChange(coinValueList,change,minCoins):
for cents in range(change+1):
coinCount = cents
for j in [c for c in coinValueList if c <= cents]:
if minCoins[cents-j] + 1 < coinCount:
coinCount = minCoins[cents-j]+1
minCoins[cents] = coinCount
return minCoins[change]
किसी को भी मदद कर सकता है, तो मुझे इस कोड के आसपास मेरे सिर लपेटो (लाइन 4 वह जगह है जहाँ मैं उलझन में पाने के लिए शुरू), कि बहुत अच्छा होगा: यहाँ इस समस्या पर किताब से कोड है। धन्यवाद!
'मिनीकेंक्स 'क्या है? वैसे भी, इसे सामान्य रूप से हल करने की कोशिश करना knapsack समस्या (या शायद इससे भी बदतर) के बराबर है, इसलिए किसी भी मामले में इष्टतम समाधान ढूंढना वास्तव में परेशानी हो जाता है। समाधान शायद उन सिक्कों पर निर्भर करता है जिनका आप उपयोग कर सकते हैं। – Bakuriu
लिखने के लिए 'सूची में एल [l के लिए l_ listpcomionion]' विषयपरक रूप से खराब है, केवल इसलिए कि मैंने इसे बहुत अधिक नहीं देखा है ... – Droogans
यह अजीब है, लेकिन वास्तव में इतना भयानक नहीं है। यह सिर्फ सूची को कम कर रहा है। एक ही चीज़ को 'if' और' जारी 'के साथ अगली पंक्ति पर पूरा किया जा सकता था, लेकिन whatevs। – acjay