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

पायथन में रिपीटिंग इंटीजर्स को वितरित करने का प्रोग्राम


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

  • i-वां ग्राहक ठीक quantity[i] आइटम प्राप्त करे,
  • i-वें ग्राहक को मिलने वाले मान सभी समान हों, और
  • सभी ग्राहक संतुष्ट हों।

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

हल करने के चरण

  1. util() फ़ंक्शन परिभाषित करें। यह i, cntr लेगा:
    • यदि i == len(quantity), तो True वापस करें।
    • temp_counter := cntr की कॉपी बनाएं
    • cntr में प्रत्येक cnt के लिए:
      • यदि cnt >= quantity[i], तो:
        • temp_counter[cnt] := temp_counter[cnt] - 1
        • यदि temp_counter[cnt] == 0, तो temp_counter से cnt-वां एलिमेंट हटाएं
        • rem := cnt - quantity[i]
        • temp_counter[rem] := temp_counter[rem] + 1
        • यदि util(i+1, temp_counter) True है, तो True वापस करें।
        • temp_counter[rem] := temp_counter[rem] - 1
        • यदि temp_counter[rem] == 0, तो temp_counter से rem-वां एलिमेंट हटाएं
      • temp_counter[cnt] := temp_counter[cnt] + 1
    • False वापस करें।
  2. मुख्य मेथड से, निम्नलिखित करें:
    • cnt := nums में मौजूद नंबरों की सभी फ्रीक्वेंसी की फ्रीक्वेंसी रखने वाला मैप
    • quantity को रिवर्स ऑर्डर में सॉर्ट करें
    • util(0, cnt) वापस करें।

उदाहरण

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

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))

इनपुट

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

आउटपुट

True
  1. Python प्रोग्राम में कैलेंडर Python प्रोग्राम में कैलेंडर

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

  1. पायथन प्रोग्राम: क्विकसॉर्ट पायथन प्रोग्राम: क्विकसॉर्ट

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

  1. पायथन प्रोग्राम में सिंपल इंटरेस्ट पायथन प्रोग्राम में सिंपल इंटरेस्ट

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