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

पायथन में अधिकतम भवन ऊंचाई खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक मान n है और जोड़े की एक और सूची है जिसे प्रतिबंध कहा जाता है। हम एक शहर में नई इमारतें बनाना चाहते हैं। लेकिन कुछ प्रतिबंध हैं। हम एक लाइन में बना सकते हैं और इमारतों को 1 से n तक लेबल किया जाता है। प्रतिबंधों के दो पैरामीटर हैं, इसलिए प्रतिबंध [i] =(id_i, max_height_i) इंगित करता है कि id_i की ऊंचाई max_height_i से कम या उसके बराबर होनी चाहिए। नई इमारतों की ऊंचाई पर शहर के प्रतिबंध इस प्रकार हैं -

  • प्रत्येक भवन की ऊंचाई 0 या सकारात्मक मान होनी चाहिए।

  • पहली इमारत की ऊंचाई 0 होनी चाहिए।

  • किन्हीं दो आसन्न इमारतों के बीच की ऊंचाई का अंतर 1 से अधिक नहीं हो सकता है।

हमें सबसे ऊँची इमारत की अधिकतम संभव ऊँचाई ज्ञात करनी है।

इसलिए, यदि इनपुट n =5, प्रतिबंध =[[2,1], [4,3]] की तरह है, तो आउटपुट 4 होगा क्योंकि हमें अधिकतम संभव ऊंचाई का पता लगाना है, इसलिए यह 4 हो सकता है जैसा कि दिखाया गया है आरेख।

पायथन में अधिकतम भवन ऊंचाई खोजने का कार्यक्रम

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

  • अगर प्रतिबंध खाली हैं, तो

    • वापसी n-1

  • resi :=आईडी के आधार पर सूची प्रतिबंधों को क्रमबद्ध करें

  • कश्मीर:=0

  • आईडीएक्स :=1

  • रेसी में प्रत्येक री के लिए, करें

    • पुनः[1] :=न्यूनतम पुनः[1] और (k+re[0]-idx)

    • कश्मीर:=पुनः[1]

    • idx :=re[0]

  • k :=रेसी में अंतिम तत्व की अधिकतम ऊंचाई

  • idx :=resi में अंतिम तत्व की आईडी

  • सूची को उलट दें

  • पहले आइटम के बाद से प्रत्येक री इन रेसी के लिए, करें

    • पुनः[1] :=न्यूनतम पुनः[1] और (k-re[0]+idx)

    • कश्मीर:=पुनः[1]

    • idx :=re[0]

  • सूची को उलट दें

  • च :=0

  • आईडीएक्स :=1

  • रेस :=0

  • रेसी में प्रत्येक री के लिए, करें

    • ff :=न्यूनतम (f+re[0]-idx) और re[1]

    • res :=अधिकतम रेस और भागफल (re[0] - idx + f + ff)/2

    • idx :=re[0]

    • च :=एफएफ

  • अधिकतम (f+n-idx) और रेस करें

उदाहरण

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

def solve(n, restrictions):
   if not restrictions:
      return n-1
   resi = sorted(restrictions, key = lambda x:x[0])

   k = 0
   idx = 1
   for re in resi:
      re[1] = min(re[1], k+re[0]-idx)
      k = re[1]
      idx = re[0]
   k = resi[-1][1]
   idx = resi[-1][0]
   resi.reverse()
   for re in resi[1:]:
      re[1] = min(re[1], k-re[0]+idx)
      k = re[1]
      idx = re[0]
   resi.reverse()

   f = 0
   idx = 1
   res = 0
   for re in resi:
      ff = min(f+re[0]-idx, re[1])
      res = max(res, (re[0] - idx + f + ff) // 2)
      idx = re[0]
      f = ff
   return max(f+n-idx,res)

n = 5
restrictions = [[2,1],[4,3]]
print(solve(n, restrictions))

इनपुट

5, [[2,1],[4,3]]

आउटपुट

4

  1. पायथन में K कार्यों को पूरा करने के लिए अधिकतम समय खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास कार्यों का एक मैट्रिक्स है जहां प्रत्येक पंक्ति में 3 मान हैं। हमारे पास एक और मूल्य k भी है। हमें कार्यों से k पंक्तियों का चयन करना है, इसे S कहते हैं, जैसे कि निम्नलिखित योग कम से कम हो और योग को इस प्रकार वापस करें:अधिकतम (S[0, 0], S[1, 0], ...S[k - 1, 0]) + अधिकतम (एस [0,

  1. पायथन में गैर-साझा शब्दों की अधिकतम लंबाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास शब्दों नामक लोअरकेस वर्णानुक्रम की एक सूची है, हमें दो अलग-अलग शब्दों की लंबाई का अधिकतम योग खोजना होगा जो एक सामान्य अक्षर साझा नहीं करते हैं। इसलिए, यदि इनपुट शब्दों की तरह है =[abcd, mno , abdcmno, amno], तो आउटपुट 7 होगा, क्योंकि शब्द साझा नहीं करते हैं कोई भी सामान्य अक्ष

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

    इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो तीन अंकों से अधिकतम राशि का पता लगाता है। हमारे पास तीन संख्याएँ होंगी, और हमारा लक्ष्य उन तीन संख्याओं में से अधिकतम संख्या ज्ञात करना है। आइए बेहतर समझ के लिए कुछ नमूना परीक्षण मामलों को देखें। Input: a, b, c = 2, 34, 4 Output: 34 Input: a