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

पायथन में आसन्न k स्वैप और अधिकतम k स्वैप के बाद अनुक्रमों की संख्या खोजने का प्रोग्राम


मान लीजिए हमारे पास पहले n प्राकृतिक संख्याओं वाली एक सरणी A है। हमें पता लगाना है कि A पर सटीक k आसन्न स्वैप के बाद हम कितने अनुक्रम (S1) प्राप्त कर सकते हैं? और A पर अधिकतम k स्वैप के बाद हम कितने अनुक्रम (S2) प्राप्त कर सकते हैं? यहां आसन्न स्वैप का अर्थ इंडेक्स i और i+1 पर तत्वों को स्वैप करना है।

तो, यदि इनपुट n = 3, k = 2 है, तो आउटपुट 3, 6 होगा क्योंकि:

मूल सरणी [1, 2, 3] थी

  • 2 आसन्न स्वैप के बाद: हम [1, 2, 3], [2, 3, 1], [3, 1, 2] प्राप्त कर सकते हैं। तो S1 = 3
  • अधिकतम 2 स्वैप के बाद:
    • 0 स्वैप के बाद: [1, 2, 3]
    • 1 स्वैप के बाद: [2, 1, 3], [3, 2, 1], [1, 3, 2]
    • 2 स्वैप के बाद: [1, 2, 3], [2, 3, 1], [3, 1, 2]

तो S2 = 6

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

  • p = 10^9+7
  • A := केवल एक तत्व 1 वाली सरणी
  • C := केवल एक तत्व 1 वाली सरणी
  • n को 2 से n+1 तक की रेंज में, करें
    • B := A, A := केवल एक तत्व 1 वाली सरणी
    • D := C, C := केवल एक तत्व 1 वाली सरणी
    • x को 1 से न्यूनतम (k+1 और 1 से n तक सभी संख्याओं का योग) तक की रेंज में
      • (A के अंतिम तत्व + (B[x] जब x, B के आकार से कम हो अन्यथा 0) - (B[x-n] जब 0 <= x-n अन्यथा 0)) mod p को A के अंत में डालें
    • x को 1 से n-2 तक की रेंज में, करें
      • ((D[x]+(n-1)*D[x-1]) mod p) को C के अंत में डालें
    • (n * D के अंतिम तत्व) mod p को C के अंत में डालें
  • A[इंडेक्स k mod 2 से k] के सभी तत्वों का योग mod p और C[n-1 और k का न्यूनतम] लौटाएं

उदाहरण

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

p = 10**9+7 def solve(n, k): A = [1] C = [1] for n in range(2,n+1): B = A A = [1] D = C C = [1] for x in range(1,min(k+1,n*(n-1)//2+1)): A.append((A[-1] + (B[x] if x<len(B) else 0) - (B[x-n] if 0<=x-n else 0)) % p ) for x in range(1,n-1): C.append((D[x]+(n-1)*D[x-1]) % p) C.append(n*D[-1] % p) return sum(A[k%2:k+1:2]) % p,C[min(n-1,k)] n = 3 k = 2 print(solve(n, k))

इनपुट

3, 2 

आउटपुट

3, 6

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

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

  1. - पायथन में उन स्ट्रिंग्स की संख्या खोजें जहां 'a' 'a' या 'b' हो सकता है, और 'b' 'b' ही रहता है

    मान लीजिए हमारे पास केवल a और b वाली एक स्ट्रिंग s है। a a रह सकते हैं या b में बदल सकते हैं, लेकिन b को बदला नहीं जा सकता। हमें उन अद्वितीय स्ट्रिंग्स की संख्या ढूंढनी है जो हम बना सकते हैं। उदाहरण के लिए, यदि इनपुट है s = baab, तो आउटपुट होगा 4, क्योंकि हम ये स्ट्रिंग्स बना सकते हैं: [baab, babb,

  1. - पायथन प्रोग्राम: लिस्ट में सबसे बड़ी संख्या ढूंढें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट लिस्ट इनपुट दिए जाने पर, हमें दी गई लिस्ट में सबसे बड़ी संख्या ढूंढने की आवश्यकता है। यहां हम दो दृष्टिकोणों पर चर्चा करेंगे: सॉर्टिंग तकनीकों का उपयोग करना बिल्ट-इन max() फंक्शन का