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

पायथन में अद्वितीय पथ

मान लीजिए कि कोई रोबोट n x m ग्रिड (n पंक्तियाँ और m कॉलम) के ऊपरी-बाएँ कोने में स्थित है। रोबोट किसी भी समय केवल नीचे की ओर या दाईं ओर ही घूम सकता है। रोबोट ग्रिड के निचले-दाएँ कोने तक पहुँचना चाहता है (नीचे चित्र में 'END' अंकित है)। तो हमें यह पता लगाना होगा कि कितने संभावित अनूठे रास्ते हैं? उदाहरण के लिए यदि m =3 और n =2, तो ग्रिड नीचे जैसा होगा -

<टीडी>
<टीडी>
<टीडी>
रोबो

END

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

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

आइए चरणों को देखें -

  • हम इसे हल करने के लिए गतिशील प्रोग्रामिंग दृष्टिकोण का उपयोग करेंगे
  • चलो पंक्ति :=n और col :=m, क्रम n x m की तालिका DP बनाएं और इसे -1 से भरें
  • DP[पंक्ति - 2, कॉलम - 1] :=1
  • मैं के लिए 0 से कर्नल की श्रेणी में
    • DP[n – 1, i] :=1
  • मैं के लिए 0 से पंक्ति की सीमा में
    • DP[i, col - 1] :=1
  • मैं श्रेणी पंक्ति -2 से नीचे -1 के लिए
    • जे के लिए col -2 से नीचे -1
        . की श्रेणी में
      • DP[i, j] :=DP[i + 1, j] + DP[i, j + 1]
  • रिटर्न डीपी[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) के रूप में किनारों की एक सूची है और ये एक पेड़ का प्रतिनिधित्व कर रहे हैं। प्रत्येक किनारे के लिए हमें इनपुट में दिए गए क्रम में उसी क्रम में अद्वितीय पथों की कुल संख्या ज्ञात करनी होगी जिसमें उक्त किनारे शामिल हैं। इसलिए, यदि इनपुट किनारों की तरह है =[[0, 1],[0, 2],[1

  1. सूची में वैकल्पिक श्रेणी टुकड़ा करना (पायथन)

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

  1. पायथन में मैट्रिक्स को इनिशियलाइज़ करें

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