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

अधिकतम संख्या में बॉक्स खोजने के लिए प्रोग्राम जिसे हम अजगर में किसी अन्य बॉक्स के अंदर फिट कर सकते हैं

मान लीजिए हमारे पास बक्से की एक सूची है जहां प्रत्येक पंक्ति दिए गए बक्से की ऊंचाई और चौड़ाई का प्रतिनिधित्व करती है। हम एक बॉक्स को दूसरे बॉक्स में रख सकते हैं यदि पहला बॉक्स दूसरे बॉक्स से छोटा है (जब इसकी चौड़ाई और ऊंचाई दोनों दूसरे बॉक्स से छोटी हों), तो हमें बॉक्स में फिट होने वाले बॉक्स की अधिकतम संख्या ज्ञात करनी होगी।

तो, अगर इनपुट पसंद है

चौड़ाई
ऊंचाई
12
12
10
10
6
6
5
10

तब आउटपुट 3 होगा, क्योंकि हम [10, 10] के अंदर [6, 6] बॉक्स को फिट कर सकते हैं, जिसे हमें [12, 12] बॉक्स में रखा जा सकता है।

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

  • एक फ़ंक्शन को परिभाषित करें insert_index() । यह गिरफ्तार होगा, this_h
  • एल :=0
  • r :=गिरफ्तारी का आकार - 1
  • res :=0
  • जबकि l <=r, करते हैं
    • m :=l +(r - l) // 2
    • cur_h :=arr[m]
    • अगर cur_h
    • res :=m
    • एल :=एम + 1
  • अन्यथा,
    • r :=m - 1
  • रिटर्न रेस + 1
  • मुख्य विधि से, निम्न कार्य करें:
  • चौड़ाई के आधार पर मैट्रिक्स को क्रमबद्ध करें, यदि चौड़ाई समान हैं तो उन्हें ऊंचाई के आधार पर क्रमबद्ध करें
  • n :=मैट्रिक्स में मदों की संख्या
  • ऊंचाई:=आकार की एक सूची (n + 1) और इसे inf से भरें
  • ऊंचाई[0] :=-inf
  • res :=0
  • मैट्रिक्स में प्रत्येक बॉक्स के लिए, करें
    • [cur_w, cur_h] :=बॉक्स
    • सूचकांक:=insert_index(ऊंचाई, cur_h)
    • यदि ऊंचाई[सूचकांक]>=cur_h, तो
      • ऊंचाई [सूचकांक] :=cur_h
    • res :=अधिकतम रेस और इंडेक्स
  • रिटर्न रेस
  • आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

    उदाहरण

    class Solution:
       def solve(self, matrix):
          matrix = sorted(matrix, key=lambda x: (x[0], -x[1]))
          n = len(matrix)
    
          heights = [float("inf")] * (n + 1)
          heights[0] = float("-inf")
          res = 0
    
          for box in matrix:
             cur_w, cur_h = box
             index = self.insert_index(heights, cur_h)
    
             if heights[index] >= cur_h:
                heights[index] = cur_h
             res = max(res, index)
          return res
    
       def insert_index(self, arr, this_h):
          l = 0
          r = len(arr) - 1
          res = 0
          while l <= r:
             m = l + (r - l) // 2
             cur_h = arr[m]
             if cur_h < this_h:
                res = m
                l = m + 1
             else:
                r = m - 1
          return res + 1
    
    ob = Solution()
    matrix = [
       [12, 12],
       [10, 10],
       [6, 6],
       [5, 10]
    ]
    print(ob.solve(matrix))

    इनपुट

    matrix = [  
    [12, 12],  
    [10, 10],  
    [6, 6],  
    [5, 10] ]

    आउटपुट

    3

    1. पायथन में कोष्ठकों के संतुलित समूहों की अधिकतम संख्या खोजने का कार्यक्रम

      मान लीजिए कि हमारे पास एक स्ट्रिंग है जिसमें संतुलित कोष्ठक ( और ) हैं, हमें उन्हें संतुलित समूहों की अधिकतम संख्या में विभाजित करना होगा। इसलिए, यदि इनपुट (()())()(()) जैसा है, तो आउटपुट [(()()), (), (())] इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - अस्थायी:=रिक्त स्ट्रिंग समूह :=एक नई सूची

    1. पायथन में हम जितने सिक्के एकत्र कर सकते हैं, उन्हें खोजने का कार्यक्रम

      मान लीजिए कि हमारे पास एक 2D मैट्रिक्स है जहां प्रत्येक सेल कुछ सिक्के संग्रहीत करता है। अगर हम [0,0] से शुरू करते हैं, और केवल दाएं या नीचे जा सकते हैं, तो हमें नीचे दाएं कोने से अधिकतम सिक्कों की संख्या का पता लगाना होगा। तो, अगर इनपुट पसंद है 1 4 2 2 0 0 0 5 तब आउटपुट 14 होग

    1. पायथन कार्यक्रम अधिकतम तीन।

      तीन नंबर ए बी और सी को देखते हुए, हमारा काम यह है कि हमें दी गई संख्या में से अधिकतम तत्व को खोजना है। उदाहरण Input: a = 2, b = 4, c = 3 Output: 4 एल्गोरिदम Step 1: input three user input number. Step2: Add three numbers to list. Step 3: Using max() function to find the greatest number max(lst).