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

पायथन में पढ़ाने के लिए न्यूनतम संख्या में लोगों को खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक संख्या n है, एक सरणी जिसे 'भाषाएँ' कहा जाता है, और एक सरणी जिसे 'मैत्री' कहा जाता है, इसलिए n भाषाएँ 1 से n तक क्रमांकित हैं, भाषाएँ [i] उन भाषाओं के एक समूह का प्रतिनिधित्व करती हैं जिन्हें उपयोगकर्ता जानता है, और मित्रता[ i] एक जोड़ी रखता है [ui, vi] उपयोगकर्ताओं ui और vi के बीच दोस्ती को दर्शाता है। हम एक भाषा का चयन कर सकते हैं और इसे कुछ उपयोगकर्ताओं को सिखा सकते हैं ताकि सभी मित्र एक दूसरे के साथ संवाद कर सकें। हमें पढ़ाने के लिए आवश्यक उपयोगकर्ताओं की न्यूनतम संख्या ज्ञात करनी होगी। (एक बात हमें ध्यान में रखनी है कि मित्रता सकर्मक नहीं होती है, इसलिए यदि x, y का मित्र है और y, z का मित्र है, तो इसका अर्थ यह नहीं है कि x, z का मित्र है)।

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

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

  • lang :=उपयोगकर्ताओं द्वारा ज्ञात सभी विशिष्ट भाषाओं की सूची
  • not_comm :=एक नया सेट
  • दोस्ती में प्रत्येक जोड़ी के लिए ए, बी, करते हैं
    • a :=a - 1
    • b :=b - 1
    • यदि lang[a] और lang[b] संयुक्त हैं, तो
      • not_comm में एक डालें
      • not_comm में b डालें
  • अगर not_comm खाली है, तो
    • वापसी 0
  • cnt :=एक खाली नक्शा
  • not_comm में प्रत्येक व्यक्ति के लिए, करें
    • लैंग की आवृत्ति [व्यक्ति] स्टोर करें और इसे सीएनटी में स्टोर करें
  • अस्थायी:=cnt के सभी मानों की अधिकतम सूची
  • not_comm - temp का वापसी आकार

उदाहरण

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

from collections import Counter
def solve(n, languages, friendships):
   lang = [set(L) for L in languages]

   not_comm = set()
   for a,b in friendships:
      a -= 1
      b -= 1
      if lang[a].isdisjoint(lang[b]):
         not_comm.add(a)
         not_comm.add(b)
   if not not_comm:
      return 0

   cnt = Counter()
   for person in not_comm:
      cnt.update(lang[person])
   temp = max(cnt.values())
   return len(not_comm) - temp

n = 3
languages = [[2],[1,3],[1,2],[3]]
friendships = [[1,4],[1,2],[3,4],[2,3]]
print(solve(n, languages, friendships))

इनपुट

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

आउटपुट

2

  1. पायथन का उपयोग करके सभी नोड्स तक पहुंचने के लिए न्यूनतम संख्या में कोने खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक निर्देशित चक्रीय ग्राफ है, जिसमें n कोने हैं और नोड्स 0 से n-1 तक गिने जाते हैं, ग्राफ को किनारे की सूची द्वारा दर्शाया जाता है, जहां किनारों [i] =(यू, वी) नोड यू से एक निर्देशित किनारे का प्रतिनिधित्व करता है। नोड वी। हमें शिखर का सबसे छोटा सेट ढूंढना है जिससे ग्राफ में सभ

  1. न्यूनतम संख्या रंग खोजने का कार्यक्रम पायथन में विलय के बाद रहता है

    मान लीजिए हमारे पास रंगों की एक सूची है (आर, जी, बी)। अब अगर दो अलग-अलग रंग एक-दूसरे के बगल में हों तो वे तीसरे रंग की एक ही रंग की वस्तु में बदल सकते हैं। हमें ऐसे परिवर्तनों के किसी भी संभावित क्रम के बाद शेष बची सबसे छोटी संख्या ज्ञात करनी होगी। इसलिए, यदि इनपुट रंग =[G, R, G, B, R] जैसा है, तो

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

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे - समस्या कथन किसी संख्या इनपुट को देखते हुए, दी गई संख्या के गुणनखंडों का न्यूनतम योग ज्ञात करें। यहां हम सभी कारकों और उनके संगत योग की गणना करेंगे और फिर उनमें से न्यूनतम का पता लगाएंगे। इसलिए संख्या के गुणनफल का न्यूनतम योग ज्