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

पायथन में दोहराए जाने वाले पूर्णांक वितरित करने का कार्यक्रम

मान लीजिए कि हमारे पास एक सरणी संख्या है, अधिकतम 50 अद्वितीय मान हैं। हमारे पास मात्रा नामक एक और सरणी भी है, जहां मात्रा [i] ग्राहक द्वारा ऑर्डर किए गए मूल्यों की मात्रा को दर्शाता है। हमें यह जांचना होगा कि अंकों को वितरित करना संभव है या नहीं

  • ith ग्राहक को ठीक मात्रा [i] आइटम,

    . मिलता है
  • ith ग्राहक को जो मूल्य मिलता है, वह सभी बराबर होता है, और

  • सभी ग्राहक संतुष्ट हैं।

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

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

  • उपयोग() फ़ंक्शन को परिभाषित करें। इसमें मुझे, cntr लगेगा

  • अगर मैं मात्रा के आकार के समान हूं, तो

    • सही लौटें

  • temp_counter :=cntr की कॉपी बनाएं

  • cntr में प्रत्येक cnt के लिए, करें

    • अगर cnt>=मात्रा[i], तो

      • temp_counter[cnt] :=temp_counter[cnt] - 1

      • अगर temp_counter[cnt] 0 के समान है, तो

        • cnt-वें तत्व को temp_counter से हटाएं

      • रेम:=सीएनटी - मात्रा [i]

      • temp_counter[rem] :=temp_counter[rem] + 1

      • यदि उपयोग (i+1, temp_counter) सत्य है, तो

        • सही लौटें

      • temp_counter[rem] :=temp_counter[rem] - 1

      • अगर temp_counter[rem] 0 के समान है, तो

        • अस्थायी_काउंटर से रेम-वें तत्व हटाएं

    • temp_counter[cnt] :=temp_counter[cnt] + 1

  • झूठी वापसी

  • मुख्य विधि से, निम्न कार्य करें

  • cnt :=अंकों में मौजूद संख्याओं की सभी आवृत्तियों की आवृत्ति को धारण करने वाला मानचित्र

  • मात्रा को उल्टे क्रम में क्रमबद्ध करें

  • वापसी का उपयोग (0, सीएनटी)

उदाहरण

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

from collections import Counter
def solve(nums, quantity):
   def util(i, cntr):
      if i == len(quantity):
         return True

      temp_counter = cntr.copy()
      for cnt in cntr:
         if cnt >= quantity[i]:
            temp_counter[cnt] -= 1
            if temp_counter[cnt] == 0:
               temp_counter.pop(cnt)
         rem = cnt - quantity[i]
         temp_counter[rem] += 1

         if util(i+1, temp_counter):
            return True

         temp_counter[rem] -= 1
         if temp_counter[rem] == 0:
            temp_counter.pop(rem)
         temp_counter[cnt] += 1

      return False

   cnt = Counter(Counter(nums).values())
   quantity.sort(reverse=True)
   return util(0, cnt)

nums = [5,1,2,2,3,4,4,3,3]
quantity = [2,2,3]
print(solve(nums, quantity))

इनपुट

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

आउटपुट

True

  1. पायथन कार्यक्रम में कैलेंडर

    पायथन एक अंतर्निहित मॉड्यूल है जिसे कैलेंडर . कहा जाता है कैलेंडर के साथ काम करने के लिए। हम कैलेंडर . के बारे में जानने जा रहे हैं इस लेख में मॉड्यूल। कैलेंडर . में सप्ताह मॉड्यूल सोमवार से प्रारंभ होता है और रविवार . को समाप्त होता है . मॉड्यूल कैलेंडर ग्रेगोरियन . का अनुसरण करता है पंचांग। आइए द

  1. QuickSort के लिए पायथन प्रोग्राम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सरणी दी गई है, हमें इसे क्विकॉर्ट की अवधारणा का उपयोग करके क्रमबद्ध करने की आवश्यकता है यहां हम पहले सरणी को विभाजित करते हैं और क्रमबद्ध सरणी प्राप्त करने के लिए अलग विभाजन को सॉर्ट करते हैं। आइए अब नीचे दि

  1. पायथन कार्यक्रम में साधारण रुचि

    इस लेख में, हम Python 3.x में साधारण ब्याज की गणना के बारे में जानेंगे। या पहले। साधारण रुचि भुगतानों के बीच बीते दिनों की संख्या से दैनिक ब्याज दर को मूल राशि से गुणा करके गणना की जाती है। गणितीय रूप से, साधारण ब्याज =(पी एक्स टी एक्स आर)/100 कहां, पी मूल राशि है T समय है और आर दर है उदाहर