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

पायथन का उपयोग करके समान लेबल वाले उप-वृक्ष में नोड्स की संख्या खोजने का कार्यक्रम

मान लीजिए कि हमारे पास n नोड्स वाला एक रूटेड सामान्य ट्री है, जिसके नोड्स 0 से n-1 तक गिने जाते हैं। प्रत्येक नोड में लोअरकेस अंग्रेजी अक्षर वाला एक लेबल होता है। लेबल्स को लेबल एरे में इनपुट के रूप में दिया जाता है, जहां लेबल्स [i] में ith नोड के लिए लेबल होता है। पेड़ को किनारे की सूची द्वारा दर्शाया जाता है जहां प्रत्येक किनारे ई में [यू, वी] प्रतिनिधित्व करता है कि आप माता-पिता हैं और वी बच्चा है। हमें आकार n की एक सरणी A ढूंढनी है, जो i

के समान लेबल वाले ith नोड के सबट्री में नोड्स की संख्या का प्रतिनिधित्व करती है

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

पायथन का उपयोग करके समान लेबल वाले उप-वृक्ष में नोड्स की संख्या खोजने का कार्यक्रम

यहाँ n =5 और लेबल ="ccaca"

तब आउटपुट [3, 2, 1, 1, 1] होगा क्योंकि रूट में एक ही लेबल वाले तीन वंशज हैं, नोड 1 में दो वंशज हैं, और अन्य सभी उस लेबल को धारण करते हैं।

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

  • E :=दी गई किनारे की सूची से ग्राफ़ बनाएं

  • N :=प्रत्येक नोड संख्या और उसके संगत लेबल वाला नक्शा

  • R :=आकार n की सूची और 0 से भरें

  • फ़ंक्शन r() को परिभाषित करें। इसमें नी लगेगा

  • सी:=एक कुंजी की आवृत्ति धारण करने के लिए एक नक्शा

  • ई [नी] में प्रत्येक ई के लिए, करें

    • E[e]

      . से ni हटाएं
    • C

      . में r(e) अपडेट करें
  • N[ni] को C

    . में अपडेट करें
  • आर[नी] :=सी[एन[नी]]

  • वापसी सी

  • मुख्य विधि से कॉल करें r(0)

  • वापसी आर

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

उदाहरण

from collections import defaultdict, Counter
def solve(n, edges, labels):
   E = defaultdict(set)
   for f,t in edges:
      E[f].add(t)
      E[t].add(f)
   N = {i:e for i,e in enumerate(labels)}
   R = [0]*n
   def r(ni):
      C = Counter()
      for e in E[ni]:
         E[e].remove(ni)
         C.update(r(e))
      C.update((N[ni]))
      R[ni] = C[N[ni]]
      return C
   r(0)
   return R
n = 5
edges = [[0,1],[0,2],[1,3],[0,4]]
labels = "ccaca"
print(solve(n, edges, labels))

इनपुट

5, [[0,1],[0,2],[1,3],[0,4]], "ccaca"

आउटपुट

[3, 2, 1, 1, 1]

  1. निकटतम बिंदु खोजने के लिए कार्यक्रम जिसमें समान x या y है, पायथन का उपयोग करके समन्वय करता है निकटतम बिंदु खोजने के लिए कार्यक्रम जिसमें समान x या y है, पायथन का उपयोग करके समन्वय करता है

    मान लीजिए कि हमारे पास pts नामक सरणी में दिए गए बिंदुओं का एक सेट है। हमारे पास एक और बिंदु (x, y) भी है जो हमारा वर्तमान स्थान है। हम एक मान्य बिंदु को एक ऐसे बिंदु के रूप में परिभाषित कर रहे हैं, जो हमारे वर्तमान बिंदु के समान x-निर्देशांक या समान y-निर्देशांक साझा करता है। हमें अपने वर्तमान स्थान

  1. पायथन में एक श्रेणी में नोड्स की संख्या खोजने का कार्यक्रम पायथन में एक श्रेणी में नोड्स की संख्या खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बीएसटी है, और हमारे पास बाएं और दाएं सीमाएं एल और आर भी हैं, हमें रूट में उन सभी नोड्स की गिनती ढूंढनी है जिनके मान एल और आर (समावेशी) के बीच मौजूद हैं। तो, अगर इनपुट पसंद है l =7, r =13, तो आउटपुट 3 होगा, क्योंकि तीन नोड हैं:8, 10, 12. इसे हल करने के लिए, हम इन चरणों

  1. सूची में सबसे छोटी संख्या खोजने के लिए पायथन प्रोग्राम सूची में सबसे छोटी संख्या खोजने के लिए पायथन प्रोग्राम

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