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

पायथन में शीर्ष बाएं बिंदु से नीचे दाएं बिंदु तक पहुंचने के कई तरीकों को खोजने के लिए कार्यक्रम

मान लीजिए कि हमारे पास एक एन एक्स एम बाइनरी मैट्रिक्स है। जहां 0 का मतलब खाली सेल और 1 का मतलब ब्लॉक्ड सेल है। अब ऊपरी बाएँ कोने से शुरू करते हुए, हमें नीचे दाएँ कोने तक पहुँचने के तरीकों की संख्या ज्ञात करनी होगी। अगर उत्तर बहुत बड़ा है, तो इसे 10^9 + 7 से संशोधित करें।

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

0 0 1
0 0 0
1 1 0

तो आउटपुट 2 होगा, क्योंकि नीचे दाईं ओर जाने के दो तरीके हैं:[दाएं, नीचे, दाएं, नीचे] और [नीचे, दाएं, दाएं, नीचे]।

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

  • dp :=दिए गए मैट्रिक्स के समान आकार का एक मैट्रिक्स और 0 से भरें
  • dp[0, 0] :=1
  • मैट्रिक्स की श्रेणी 1 से पंक्ति गणना में i के लिए, करें
    • यदि मैट्रिक्स [i, 0] 1 के समान है, तो
      • लूप से बाहर आएं
    • अन्यथा,
      • dp[i, 0] :=1
  • जे के लिए श्रेणी 1 में मैट्रिक्स की कॉलम गणना के लिए, करें
    • यदि मैट्रिक्स [0, j] 1 के समान है, तो
      • लूप से बाहर आएं
    • अन्यथा,
      • dp[0, j] :=1
  • मैट्रिक्स की श्रेणी 1 से पंक्ति गणना में i के लिए, करें
    • जे के लिए श्रेणी 1 में मैट्रिक्स की कॉलम गणना के लिए, करें
      • यदि मैट्रिक्स [i, j] 1 के समान है, तो
        • dp[i, j] :=0
      • अन्यथा,
        • dp[i, j] :=dp[i-1, j] + dp[i, j-1]
  • dp का निचला दायां मान लौटाएं

उदाहरण (पायथन)

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

class Solution:
   def solve(self, matrix):
      dp = [[0] * len(matrix[0]) for _ in range(len(matrix))]
      dp[0][0] = 1
      for i in range(1, len(matrix)):
         if matrix[i][0] == 1:
            break
         else:
            dp[i][0] = 1
      for j in range(1, len(matrix[0])):
         if matrix[0][j] == 1:
            break
         else:
            dp[0][j] = 1
      for i in range(1, len(matrix)):
         for j in range(1, len(matrix[0])):
            if matrix[i][j] == 1:
               dp[i][j] = 0
            else:
               dp[i][j] = dp[i - 1][j] + dp[i][j - 1]
      return dp[-1][-1]
ob = Solution()
matrix = [
   [0, 0, 1],
   [0, 0, 0],
   [1, 1, 0]
]
print(ob.solve(matrix))

इनपुट

matrix = [
[0, 0, 1],
[0, 0, 0],
[1, 1, 0] ]

आउटपुट

2

  1. पायथन में लक्ष्य प्राप्त करने के लिए प्रतीकों की व्यवस्था करने के कई तरीकों को खोजने का कार्यक्रम?

    मान लीजिए कि हमारे पास गैर-ऋणात्मक संख्याओं की एक सूची है जिन्हें अंक कहा जाता है और एक पूर्णांक लक्ष्य भी है। हमें + और - को ऐसे अंकों में व्यवस्थित करने के तरीकों की संख्या ज्ञात करनी है, ताकि व्यंजक लक्ष्य के बराबर हो। इसलिए, यदि इनपुट संख्या =[2, 3, 3, 3, 2] लक्ष्य =9 की तरह है, तो आउटपुट 2 होग

  1. पायथन में निचले दाएं कोने तक पहुंचने के लिए आवश्यक न्यूनतम संख्या में कोशिकाओं को खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक 2D ग्रिड है जो एक भूलभुलैया का प्रतिनिधित्व करता है जहां 0 खाली जगह के लिए है, और 1 दीवार है। हम ग्रिड से शुरू करेंगे [0, 0], हमें ग्रिड के निचले दाएं कोने तक पहुंचने के लिए न्यूनतम वर्गों की संख्या ज्ञात करनी होगी। यदि हम नहीं पहुँच सकते हैं, तो -1 पर लौटें। तो, अगर इनपुट

  1. पायथन में एक संदेश को डिकोड करने के कई तरीकों को खोजने के लिए कार्यक्रम

    मान लीजिए कि हमारे पास ए =1, बी =2, ... जेड =26 जैसी मैपिंग है, और हमारे पास एक एन्कोडेड संदेश संदेश स्ट्रिंग है, हमें इसे डिकोड करने के तरीकों की संख्या गिननी होगी। इसलिए, यदि इनपुट संदेश =222 जैसा है, तो आउटपुट 3 होगा, क्योंकि इसे 3 तरीकों से डिकोड किया जा सकता है:बीबीबी, बीवी, और वीबी। इसे हल क