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

कई तरीकों की जांच करने के लिए कार्यक्रम जिसे हम k बार ले जा सकते हैं और पायथन में पहले स्थान पर वापस आ सकते हैं

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

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

  • [दाएं, दाएं, बाएं, बाएं],
  • [दाएं, बाएं, दाएं, बाएं],
  • [रहें, रहें, रहें, रहें],
  • [दाएं, बाएं, रहें, रहें],
  • [रहें, रहें, दाएं, बाएं],
  • [राइट, स्टे, स्टे, लेफ्ट],
  • [राइट, स्टे, लेफ्ट, स्टे],
  • [रहो, दाएं, बाएं, रहो],
  • [रहने, दाएं, रहने, बाएं],

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

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

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

उदाहरण

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) (कार्तीय तल) पर बैठा है। यदि हमारे पास एन (उत्तर), एस (दक्षिण), डब्ल्यू (पश्चिम), और ई (पूर्व) युक्त इसकी चालों की सूची है। हमें यह जांचना होगा कि क्या यह गंतव्य निर्देशांक (x, y) पर पहुंच सकता है। इसलिए, यदि इनपुट चाल =[एन, एन, ई, ई, एस], (एक्

  1. प्राइम नंबर चेक करने के लिए पायथन प्रोग्राम

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

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

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