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

Python प्रोग्राम - ब्लैकलिस्टेड स्टेप से बचते हुए गेंद के निचले स्तर तक गिरने के तरीकों की गिनती

एक मान h और संख्याओं की सूची blacklist दी गई है। हम वर्तमान में ऊंचाई h पर हैं, और एक छोटी गेंद को ऊंचाई 0 तक ले जाने का खेल खेल रहे हैं। सम राउंड (0 से शुरू) में हम गेंद को 1, 2, या 4 सीढ़ी नीचे ले जा सकते हैं। विषम राउंड में हम 1, 3, या 4 सीढ़ी नीचे ले जा सकते हैं। कुछ स्तर ब्लैकलिस्टेड हैं। यदि गेंद वहां पहुंचती है, तो वह तुरंत मर जाती है। हमें उन तरीकों की संख्या खोजनी है जिनसे गेंद ऊंचाई 0 तक नीचे जा सकती है। यदि उत्तर बहुत बड़ा है, तो परिणाम को 10^9 + 7 से मोड करें।

उदाहरण

इनपुट: h = 5, blacklist = [2, 1]

आउटपुट: 2

व्याख्या: राउंड 0 पर, पहले एक कदम चलें (5 से 4), फिर अगले राउंड में 4 से 0। एक और संभावित तरीका: राउंड 0 पर दो कदम चलें (5 से 3), फिर अगले राउंड में 3 से 0।

एल्गोरिदम (डायनामिक प्रोग्रामिंग)

  1. blacklist को सेट में बदलें
  2. यदि 0 या h ब्लैकलिस्ट में है: 0 लौटाएं
  3. dp := आकार h+1 की सूची, प्रत्येक इंडेक्स पर [0, 0] स्टोर करें
  4. dp[0] := [1, 1]
  5. m := 10^9 + 7
  6. i 1 से h तक:
    • प्रत्येक x in [1, 2, 3, 4] के लिए:
      • यदि i - x >= 0 और i - x ब्लैकलिस्ट में नहीं:
        • यदि x != 3: dp[i][0] += dp[i - x][1]
        • यदि x != 2: dp[i][1] += dp[i - x][0]
    • dp[i][0] %= m, dp[i][1] %= m
  7. dp[h][0] लौटाएं

Python कार्यान्वयन

def solve(h, blacklist):
    blacklist = set(blacklist)
    if 0 in blacklist or h in blacklist:
        return 0
    dp = [[0, 0] for i in range(h + 1)]
    dp[0] = [1, 1]
    m = 10 ** 9 + 7
    for i in range(1, h + 1):
        for x in [1, 2, 3, 4]:
            if i - x >= 0 and i - x not in blacklist:
                if x != 3:
                    dp[i][0] += dp[i - x][1]
                if x != 2:
                    dp[i][1] += dp[i - x][0]
        dp[i][0] %= m
        dp[i][1] %= m
    return dp[h][0]

h = 5
blacklist = [2, 1]
print(solve(h, blacklist))  # आउटपुट: 2

इनपुट/आउटपुट

Input: 5, [2, 1]
Output: 2
  1. - Python प्रोग्राम - स्ट्रिंग में विशिष्ट सबस्ट्रिंग की संख्या गिनें

    एक स्ट्रिंग s दी गई है, हमें s के विशिष्ट गैर-खाली सबस्ट्रिंग की संख्या खोजनी है। उदाहरण इनपुट: s = abaa आउटपुट: 8 व्याख्या: सबस्ट्रिंग हैं [a, b, ab, ba, aa, aba, baa, abaa]। एल्गोरिदम (ट्राई/प्रीफिक्स ट्री) trie := {} (खाली डिक्शनरी) n := len(s) i 0 से n-1 तक: curr := trie j i से n-1

  1. - Python प्रोग्राम - अधिकतम k लगातार गेम जीतने के तरीकों की गिनती

    दो संख्याएं n और k दी गई हैं। यहां n उन गेम की संख्या दर्शाता है जिन्हें हम खेलने जा रहे हैं। हमें उन तरीकों की संख्या खोजनी है जिनसे हम लगातार k या उससे कम गेम जीत सकते हैं। यदि उत्तर बहुत बड़ा है तो परिणाम को 10^9 + 7 से मोड करें। उदाहरण इनपुट: n = 3, k = 2 आउटपुट: 7 व्याख्या: लगातार 2 या उससे कम

  1. पायथन में ऐरे में x से बड़े सभी वैल्यूज को फ़िल्टर करने का प्रोग्राम पायथन में ऐरे में x से बड़े सभी वैल्यूज को फ़िल्टर करने का प्रोग्राम

    मान लीजिए हमारे पास nums नामक संख्याओं की सूची है। हमारे पास x नामक एक और संख्या भी है। हमें nums से उन सभी नंबरों को फ़िल्टर करके ढूंढना है जो x से कम हैं। पायथन में filter() मेथड होता है जो फंक्शन को आर्गुमेंट के रूप में लेता है और इस फंक्शन का उपयोग करके फ़िल्टर करता है। तो, यदि इनपुट nums = [1,5