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

पायथन में कितने स्थानांतरण अनुरोधों को पूरा किया जा सकता है, यह जानने के लिए कार्यक्रम

मान लीजिए, हॉस्टल के कमरों की संख्या 0 से n-1 तक है। छात्रावास के कमरे के छात्र दूसरे कमरे में स्थानांतरित करना चाहते हैं, और वे ऐसा करने के लिए कई अनुरोध करते हैं। कोई छात्रावास की सीट खाली नहीं रहती है, स्थानांतरण अनुरोध पर तभी ध्यान दिया जाता है जब स्थानांतरण के इच्छुक छात्र की जगह कोई अन्य छात्र ले लेता है। इसलिए, अनुरोधों को देखते हुए, हमें यह पता लगाना होगा कि कितने अनुरोधों को पूरा किया जा सकता है।

इसलिए, यदि इनपुट n =3, अनुरोध =[[0,2], [1,0], [2,1]] जैसा है, तो आउटपुट 3 होगा।

कमरा 0 का छात्र कमरा 2 में स्थानान्तरित होता है।

कमरा 1 का छात्र कमरा 0 में स्थानांतरित होता है।

कमरा 2 के छात्र को कमरा 1 में स्थानांतरित किया जाता है।

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

  • k के लिए अनुरोधों की श्रेणी आकार -1 तक, 1 से घटाएं, करें

    • सभी संयोजनों में सी के लिए (अनुरोधों के आकार और के अनुसार), करें

      • d :=आकार n की एक नई सरणी जिसमें मान 0 है

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

        • डी [अनुरोध [i, 0]]:=डी [अनुरोध [i, 0]] - 1

        • d[अनुरोध[i, 1]]:=d[अनुरोध[i, 1]] + 1

      • यदि d में से कोई भी आइटम सत्य नहीं है, तो

        • वापसी कश्मीर

  • वापसी 0

उदाहरण

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

from itertools import combinations
def solve(n, requests):
   for k in range(len(requests), 0, -1):
      for c in combinations(range(len(requests)), k):
         d = [0] * n
         for i in c:
            d[requests[i][0]] -= 1
            d[requests[i][1]] += 1
         if not any(d):
            return k
   return 0

print(solve(3, [[0,2],[1,0],[2,1]]))

इनपुट

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

आउटपुट

3

  1. कितने क्यूब्स काटे गए यह पता लगाने के लिए पायथन प्रोग्राम

    मान लीजिए, a, b, और c आयामों के कई घन हैं, और उनका उपयोग करके आयाम axbxc का एक नया बॉक्स बनाया जाता है। ए, बी, और सी जोड़ीदार सह-अभाज्य हैं; gcd(a, b) =gcd(b,c) =gcd(c, d) =1. हमें बॉक्स को एक ही स्लाइस से दो टुकड़ों में काटना है जैसा कि चित्र में दिखाया गया है। हमें यह पता लगाना है कि क्या डिब्बे क

  1. यह जांचने के लिए कार्यक्रम कि हम कितने तरीकों से अजगर में एक मैट्रिक्स की खाली कोशिकाओं को चुन सकते हैं

    मान लीजिए कि हमारे पास एक एन एक्स एन बाइनरी मैट्रिक्स है जहां 0 खाली कोशिकाओं के लिए है और 1 एक अवरुद्ध सेल है, हमें एन खाली कोशिकाओं को चुनने के तरीकों की संख्या का पता लगाना होगा जैसे कि प्रत्येक पंक्ति और प्रत्येक कॉलम में कम से कम एक चुना हुआ सेल हो। यदि उत्तर बहुत बड़ा है तो वापसी परिणाम मॉड 10

  1. प्रोग्राम यह पता लगाने के लिए कि हम पायथन में कुल कितनी बारिश पकड़ सकते हैं

    मान लीजिए कि हमारे पास n गैर-ऋणात्मक पूर्णांकों की एक सरणी है। ये उस ऊंचाई का प्रतिनिधित्व कर रहे हैं जहां प्रत्येक बार की चौड़ाई 1 है, हमें गणना करनी होगी कि बारिश के बाद यह कितना पानी पकड़ने में सक्षम है। तो नक्शा इस तरह होगा - यहां हम देख सकते हैं कि 8 नीले बॉक्स हैं, इसलिए आउटपुट 8 होगा। इसे