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

k चाल चलकर वापस पहली स्थिति पर आने के तरीकों की संख्या ज्ञात करने का पायथन प्रोग्राम


मान लीजिए हम n लंबाई की सूची में स्थिति 0 पर हैं, और प्रत्येक चरण में हम एक स्थान दाएं या बाएं जा सकते हैं (सीमा पार किए बिना), या उसी स्थिति पर रह सकते हैं। अब यदि हम ठीक k चरण ले सकते हैं, तो हमें यह ढूंढना है कि हम कितने अद्वितीय तरीकों से चलकर वापस इंडेक्स 0 पर पहुंच सकते हैं। यदि उत्तर बहुत बड़ा है तो इसे 10^9 + 7 से मॉड्यूलो करके लौटाएं।

उदाहरण के लिए, यदि इनपुट n = 7, k = 4 है, तो आउटपुट 9 होगा, क्योंकि कार्य हैं:

  • [दाएं, दाएं, बाएं, बाएं],
  • [दाएं, बाएं, दाएं, बाएं],
  • [रहें, रहें, रहें, रहें],
  • [दाएं, बाएं, रहें, रहें],
  • [रहें, रहें, दाएं, बाएं],
  • [दाएं, रहें, रहें, बाएं],
  • [दाएं, रहें, बाएं, रहें],
  • [रहें, दाएं, बाएं, रहें],
  • [रहें, दाएं, रहें, बाएं],

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

  • m := 10^9 + 7
  • N := लंबाई
  • एक फ़ंक्शन dp() परिभाषित करें। यह i, jumps लेगा
  • यदि jumps 0 के समान है, तो
    • (सत्य लौटाएं जब i 0 के समान हो, अन्यथा असत्य)
  • count := dp(i, jumps - 1)
  • यदि i >= 0, तो
    • count := count + dp(i + 1, jumps - 1)
  • यदि i <= N - 1, तो
    • count := count + dp(i - 1, jumps - 1)
  • count लौटाएं
  • मुख्य विधि से निम्न करें:
  • dp(0, n) mod m लौटाएं

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

उदाहरण

class Solution:
    def solve(self, length, n):
        MOD = 10 ** 9 + 7
        N = length
        def dp(i, jumps):
            if jumps == 0:
                return +(i == 0)
            count = dp(i, jumps - 1)
            if i >= 0:
                count += dp(i + 1, jumps - 1)
            if i <= N - 1:
                count += dp(i - 1, jumps - 1)
            return count
        return dp(0, n) % MOD

ob = Solution()
n = 7
k = 4
print(ob.solve(n, k))

इनपुट

7, 4

आउटपुट

9

  1. पायथन में जांचें कि रोबोट लक्ष्य स्थिति तक पहुंच सकता है या नहीं पायथन में जांचें कि रोबोट लक्ष्य स्थिति तक पहुंच सकता है या नहीं

    मान लीजिए हमारे पास एक रोबोट है, जो वर्तमान में स्थिति (0, 0) (कार्टेशियन प्लेन) पर बैठा है। यदि हमारे पास उसकी चालों की सूची है जो वह चल सकता है, जिसमें N(उत्तर), S(दक्षिण), W(पश्चिम), और E(पूर्व) हैं। हमें जांचना है कि क्या वह गंतव्य निर्देशांक (x, y) पर पहुंच सकता है। उदाहरण के लिए, यदि इनपुट mov

  1. पायथन प्रोग्राम: अभाज्य संख्या जांचें पायथन प्रोग्राम: अभाज्य संख्या जांचें

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक संख्या दी गई है, हमें जांचना है कि दी गई संख्या अभाज्य संख्या है या नहीं। 1 से बड़ी दी गई धनात्मक संख्या जिसके 1 और संख्या स्वयं के अलावा कोई अन्य गुणनखंड नहीं होते, उसे अभाज्य संख्या कहा जाता है। 2, 3, 5, 7 आदि अभाज्य संख्

  1. पायथन प्रोग्राम: आर्मस्ट्रांग नंबर चेक करें पायथन प्रोग्राम: आर्मस्ट्रांग नंबर चेक करें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट एक इंटीजर n दिए जाने पर, हमें जांचना होगा कि दिया गया इंटीजर आर्मस्ट्रांग नंबर है या नहीं। एक पॉजिटिव इंटीजर को n क्रम का आर्मस्ट्रांग नंबर कहा जाता है यदि abcd... = a^n + b^n + c^n +