मान लीजिए हमारे पास लागत नामक एक सूची है। जहां लागत [i] में [c1, c2] इंगित करता है कि व्यक्ति के लिए शहर 0 तक पहुंचने के लिए c1 राशि खर्च होती है और शहर 1 तक पहुंचने के लिए c2 राशि खर्च होती है। हम चाहते हैं कि शहर 1 के समान ही लोग शहर 0 में जाएं। आवश्यक न्यूनतम लागत का पता लगाना होगा।
इसलिए, यदि इनपुट लागत की तरह है =[[2, 6], [10, 3], [4, 9], [5, 8]], तो आउटपुट 17 होगा, क्योंकि व्यक्ति 0 और 2 शहर 0 और व्यक्ति 1 और 3 से शहर 1, तो शहर 0 के लिए, लागत 2+4 =6 है, और शहर 1 के लिए, लागत 8+3 =11 है, कुल 17 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- s :=0
- a :=एक नई सूची
- लागत में प्रत्येक जोड़ी (x, y) के लिए, करें
- s :=s + x
- अंत में a में (y - x) डालें
- सूची को क्रमबद्ध करें
- i के लिए 0 से फ़्लोर तक (एक / 2 के आकार का) -1, do
- s :=s + a[i]
- वापसी
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(costs): s = 0 a = [] for x, y in costs: s += x a += (y - x,) a.sort() for i in range(len(a) // 2): s += a[i] return s costs = [[2, 6],[10, 3],[4, 9],[5, 8]] print(solve(costs))
इनपुट
[[2, 6],[10, 3],[4, 9],[5, 8]]
आउटपुट
17