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

पायथन में अद्वितीय पथ (Unique Paths)


मान लीजिए एक रोबोट n x m ग्रिड (n पंक्तियां और m कॉलम) के शीर्ष-बाएं कोने पर स्थित है। रोबोट किसी भी समय केवल नीचे या दाएं जा सकता है। रोबोट ग्रिड के नीचे-दाएं कोने (आरेख में 'END' से चिह्नित) तक पहुंचना चाहता है। तो हमें ढूंढना है कि कितने संभावित अद्वितीय पथ हैं? उदाहरण के लिए यदि m = 3 और n = 2, तो ग्रिड इस तरह होगा:

रोबो



END

आउटपुट 3 होगा, यानी प्रारंभिक स्थिति से अंतिम स्थिति तक पहुंचने के कुल 3 अलग-अलग तरीके हैं। ये पथ हैं:

  1. दाएं → दाएं → नीचे
  2. दाएं → नीचे → दाएं
  3. नीचे → दाएं → दाएं

आइए चरण देखें:

  • हम इसे हल करने के लिए डायनामिक प्रोग्रामिंग दृष्टिकोण का उपयोग करेंगे
  • row := n और col := m मान लें, n x m क्रम की एक तालिका DP बनाएं और इसे -1 से भरें
  • DP[row – 2, col - 1] := 1
  • i को 0 से col तक की रेंज में:
    • DP[n – 1, i] := 1
  • i को 0 से row तक की रेंज में:
    • DP[i, col – 1] := 1
  • i को row -2 से -1 तक डाउन करें:
    • j को col -2 से -1 तक डाउन करें:
      • DP[i, j] := DP[i + 1, j] + DP[i, j + 1]
  • DP[0, 0] वापस करें

उदाहरण

class Solution(object):
    def uniquePaths(self, m, n):
        row = n
        column = m
        dp = [[-1 for i in range(m)] for j in range(n)]
        dp[row-2][column-1] = 1
        for i in range(column):
            dp[n-1][i] = 1
        for i in range(row):
            dp[i][column-1] = 1
        for i in range(row-2, -1, -1):
            for j in range(column-2, -1, -1):
                dp[i][j] = dp[i+1][j] + dp[i][j+1]
        return dp[0][0]

ob1 = Solution()
print(ob1.uniquePaths(10, 3))

इनपुट

10 3

आउटपुट

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

    मान लीजिए हमारे पास (u, v) के रूप में एज की सूची है जो एक ट्री दर्शाती है। प्रत्येक एज के लिए हमें उन अद्वितीय पथों की कुल संख्या ज्ञात करनी है जिनमें वह एज शामिल है, उसी क्रम में जैसे इनपुट में दिया गया है। उदाहरण के लिए, यदि इनपुट है edges = [[0, 1],[0, 2],[1, 3],[1, 4]], तो आउटपुट [6, 4, 4, 4] ह

  1. - Python में सूची की वैकल्पिक रेंज स्लाइसिंग

    स्लाइसिंग Python में दी गई सूची से डेटा विश्लेषण के लिए एक बहुत ही सामान्य तकनीक है। लेकिन हमारे विश्लेषण के लिए कभी-कभी हमें मानों की एक विशिष्ट रेंज के लिए सूची के स्लाइस बनाने की आवश्यकता होती है। उदाहरण के लिए, हमें सूची से हर 4 तत्वों को छोड़कर 4 तत्व प्रिंट करने की आवश्यकता है। इस लेख में हम P

  1. - पायथन में मैट्रिक्स आरंभ करना

    इस लेख में, हम सीखेंगे कि पायथन 3.x (या पूर्व संस्करणों) में दो-आयामी सूची का उपयोग करके मैट्रिक्स को कैसे आरंभ किया जा सकता है। आइए मैट्रिक्स को आरंभ करने के सहज तरीके को देखें जो केवल पायथन भाषा प्रदान करती है। यहाँ हम सूची समझ का लाभ उठाते हैं। हम आंतरिक सूची को आरंभ करते हैं और फिर सूची समझ का