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

पायथन में कैंपस बाइक्स II


मान लीजिए हमारे पास एक 2D ग्रिड है जो एक कैंपस को दर्शाता है, जिसमें N वर्कर्स और M बाइक्स हैं, जहां N <= M। प्रत्येक वर्कर और बाइक इस ग्रिड पर 2D निर्देशांक में स्थित हैं। हमें प्रत्येक वर्कर को एक यूनिक बाइक असाइन करनी है ताकि प्रत्येक वर्कर और उनकी असाइन की गई बाइक के बीच मैनहट्टन दूरी का योग न्यूनतम हो।

हम जानते हैं कि दो बिंदुओं p1 और p2 के बीच मैनहट्टन दूरी है: (p1, p2) = |p1.x - p2.x| + |p1.y - p2.y|। हमें प्रत्येक वर्कर और उनकी असाइन की गई बाइक के बीच मैनहट्टन दूरियों के न्यूनतम संभावित योग को ढूंढना है।

उदाहरण के लिए, यदि इनपुट है workers = [[0,0],[2,1]], bikes = [[1,2],[3,3]] तो आउटपुट 6 होगा।

पायथन में कैंपस बाइक्स II

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

  • एक फ़ंक्शन helper() परिभाषित करें। यह a,b लेगा
    • return |a[0]-b[0]| + |a[1] - b[1]|
  • एक फ़ंक्शन solve() परिभाषित करें। यह bikes, workers, bikev, i:= 0 लेगा
  • info := i और bikev के साथ एक सूची
  • यदि info मेमो में मौजूद है, तो
    • memo[info] लौटाएं
  • यदि i वर्कर्स के आकार के समान है, तो
    • 0 लौटाएं
  • temp := infinity
  • j को 0 से bikes के आकार तक रेंज में, करें
    • यदि bikev[j] नॉन-जीरो नहीं है, तो
      • bikev[j]:= 1
      • temp := temp का न्यूनतम, helper(workers[i], bikes[j]) + solve(bikes, workers, bikev, i+1)
      • bikev[j]:= 0
  • memo[info]:= temp
  • temp लौटाएं
  • एक फ़ंक्शन assignBikes() परिभाषित करें। यह workers, bikes लेगा
  • bikev := एक सूची जिसका आकार bikes के आकार के समान है, इसे false से भरें
  • memo:= एक नया मैप
  • solve(bikes, workers, bikev) लौटाएं

उदाहरण

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

class Solution(object):    def helper(self,a,b):       return abs( (a[0]-b[0]) ) + abs( (a[1] - b[1]) )    def solve(self,bikes,workers,bikev,i=0):       info = (i,tuple(bikev))       if info in self.memo:          return self.memo[info]       if i == len(workers):          return 0       temp = float('inf')       for j in range(len(bikes)):          if not bikev[j]:             bikev[j]=1             temp = min(temp,self.helper(workers[i],bikes[j])+self.solve(bikes,workers,bikev,i+1))             bikev[j]=0       self.memo[info]= temp       return temp    def assignBikes(self, workers, bikes):       bikev = [False for i in range(len(bikes))]       self.memo={}       return self.solve(bikes,workers,bikev) ob = Solution() print(ob.assignBikes([[0,0],[2,1]],[[1,2],[3,3]]))

इनपुट

[[0,0],[2,1]] [[1,2],[3,3]]

आउटपुट

6

  1. पायथन में issuperset() फंक्शन पायथन में issuperset() फंक्शन

    इस लेख में, हम पायथन में issuperset() और विभिन्न क्षेत्रों में इसके कार्यान्वयन के बारे में जानेंगे।यह मेथड बूलियन True वापस करता है यदि सेट B के सभी तत्व सेट A के सभी तत्वों को समाहित करते हैं जिसे तर्क के रूप में पारित किया जाता है और झूठा वापस करता है यदि A के सभी तत्व B में मौजूद नहीं हैं।इसका म

  1. - पायथन में अंडरस्कोर (_)

    पायथन में कुछ मामलों में हम सिंगल अंडरस्कोर (_) और कुछ मामलों में डबल अंडरस्कोर (__) का उपयोग करते हैं। पायथन में निम्नलिखित मामले हैं, जहां हम अंडरस्कोर का उपयोग करते हैं। यदि हम इंटरप्रेटर में अंतिम अभिव्यक्ति का मान स्टोर करना चाहते हैं। यदि हम कुछ मानों को अनदेखा करना चाहते हैं। वेरिएबल या फ़ं

  1. - पायथन में क्वाइन (Quine)

    क्वाइन एक प्रोग्राम है, जो कोई इनपुट नहीं लेता, लेकिन यह आउटपुट उत्पन्न करता है। यह अपना स्वयं का सोर्स कोड दिखाएगा। इसके अतिरिक्त, क्वाइन की कुछ शर्तें हैं। हम प्रोग्राम के अंदर सोर्स कोड फ़ाइल नहीं खोल सकते। उदाहरण कोड a=a=%r;print (a%%a);print (a%a) आउटपुट a=a=%r;print (a%%a);print (a%a) यह क्व