Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में गुणा संचालन करके अधिकतम स्कोर ज्ञात करने का प्रोग्राम


मान लीजिए हमारे पास nums और multipliers नामक दो सरणियाँ हैं जिनका आकार क्रमशः n और m है (n >= m)। सरणियाँ 1-अनुक्रमित हैं। अब हमारा प्रारंभिक स्कोर 0 है। हम ठीक m संचालन करना चाहते हैं। i-वें संचालन (1-अनुक्रमित) पर, हम करेंगे:

  • nums के शुरुआत या अंत से एक मान x चुनें।

  • स्कोर में multipliers[i] * x जोड़ें।

  • nums सरणी से x को हटाएं।

हमें m संचालन करने के बाद अधिकतम स्कोर ज्ञात करना है।

इसलिए, यदि इनपुट है nums = [5,10,15], multipliers = [5,3,2], तो आउटपुट 115 होगा क्योंकि हम 15 ले सकते हैं फिर इसे 5 से गुणा करके 5*15 = 75 प्राप्त कर सकते हैं, फिर 10*3 = 30, इसलिए कुल 75+30 = 105 और अंत में 5*2 = 10, इसलिए कुल 105+10 = 115।

इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:

  • n := nums का आकार, m := multipliers का आकार

  • dp := m x (m+1) आकार का एक 2D सरणी जिसे 0 से भरा गया हो

  • i को m - 1 से 0 तक उल्टे क्रम में, करें

    • j को i से m - 1 तक के लिए, करें

      • k := i + m - j - 1

      • dp[i, j] = (nums[i] * multipliers[k] + dp[i+1, j]) और (nums[j-m+n] * multipliers[k] + dp[i, j-1]) का अधिकतम

  • dp[0] का अंतिम तत्व वापस करें

उदाहरण

बेहतर समझ के लिए निम्न कार्यान्वयन देखें:

def solve(nums, multipliers):
    n, m = len(nums), len(multipliers)
    dp = [[0]*m for _ in range(m+1)]
    for i in reversed(range(m)):
        for j in range(i, m):
            k = i + m - j - 1
            dp[i][j] = max(nums[i] * multipliers[k] + dp[i+1][j], nums[j-m+n] * multipliers[k] + dp[i][j-1])
    return dp[0][-1]

nums = [5,10,15]
multipliers = [5,3,2]
print(solve(nums, multipliers))

इनपुट

[5,10,15], [5,3,2]

आउटपुट

115
  1. पायथन में सभी संभावित वैध पथों से अधिकतम स्कोर ज्ञात करने का प्रोग्राम पायथन में सभी संभावित वैध पथों से अधिकतम स्कोर ज्ञात करने का प्रोग्राम

    मान लीजिए हमारे पास दो सरणियाँ nums1 और nums2 हैं। एक वैध पथ को इस प्रकार परिभाषित किया गया है: nums1 या nums2 को पार करने के लिए चुनें (सूचकांक-0 से)। सरणी को बाएं से दाएं पार करें। अब, यदि हम किसी ऐसे मान से गुजर रहे हैं जो nums1 और nums2 दोनों में मौजूद है, तो हम दूसरे सरणी पर पथ बदल सकते हैं।

  1. - पायथन में नंबर डिलीट करके अधिकतम एडिटिव स्कोर खोजने का प्रोग्राम

    मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है। एक ऑपरेशन पर विचार करें जहां हम एक नंबर चुनते हैं, उसे हटाते हैं और अपना स्कोर उस नंबर और उसके दो आसन्न नंबरों के योग से बढ़ाते हैं। हम इस ऑपरेशन को जितनी बार चाहें कर सकते हैं जब तक हम लिस्ट के पहले या आखिरी नंबर को नहीं चुनते। हमें अधिकतम संभव

  1. - Python में N को 1 तक कम करने के लिए अधिकतम ऑपरेशन ढूंढना

    मान लीजिए हमारे पास दो संख्याएं P और Q हैं और वे एक संख्या N = (P!/Q!) बनाते हैं। हमें N को 1 तक कम करना है अधिकतम संभव ऑपरेशन करके। प्रत्येक ऑपरेशन में, कोई N को N/X से बदल सकता है जब N, X से विभाज्य हो। हम अधिकतम ऑपरेशन की संख्या वापस करेंगे जो संभव हो सकती है। तो, यदि इनपुट A = 7, B = 4 की तरह है