मान लीजिए कि हमारे पास दो सूचियाँ हैं जिन्हें अंक और गुणक कहा जाता है। अब एक संक्रिया पर विचार करें जिसमें हम अंकों में से किसी भी संख्या को हटा सकते हैं और गुणकों में से किसी भी संख्या को हटा सकते हैं और फिर उन्हें एक साथ गुणा कर सकते हैं। हमें इस ऑपरेशन को तब तक दोहराना होगा जब तक कि कोई एक सूची खाली न हो, हमें गुणा की गई संख्याओं का अधिकतम योग ज्ञात करना होगा।
इसलिए, यदि इनपुट संख्या =[-4, 4, 3] गुणक =[-2, 2] की तरह है, तो आउटपुट 16 होगा, क्योंकि हम -4 को -2 के साथ और 4 को 2 के साथ -4 प्राप्त करने के लिए मिला सकते हैं। * -2 + 4 * 2.
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
सूची संख्या क्रमित करें
-
सूची गुणकों को क्रमबद्ध करें
-
रेस :=0
-
यदि अंकों का आकार <गुणकों का आकार, तो
-
स्वैप अंक और गुणक :=गुणक, अंक
-
-
n :=अंकों का आकार
-
मी :=गुणकों का आकार
-
मैं के लिए 0 से एम -1 की सीमा में, करो
-
यदि गुणक[i] <=0, तो
-
रेस:=रेस + अंक[i] * गुणक[i]
-
-
अन्यथा,
-
रेस :=रेस + मल्टीप्लायर्स[i] * nums[n -(m - i)]
-
-
-
रिटर्न रेस
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें
def solve(nums, multipliers): nums.sort() multipliers.sort() res = 0 if len(nums) < len(multipliers): nums, multipliers = multipliers, nums n, m = len(nums), len(multipliers) for i in range(m): if multipliers[i] <= 0: res += nums[i] * multipliers[i] else: res += multipliers[i] * nums[n - (m - i)] return res nums = [-4, 4, 3] multipliers = [-2, 2] print(solve(nums, multipliers))
इनपुट
[-4, 4, 3], [-2, 2]
आउटपुट
16