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

सी++ में न्यूनतम पथ योग

मान लीजिए कि हमारे पास गैर-ऋणात्मक पूर्णांकों से भरा एक m x n मैट्रिक्स है, तो ऊपरी बाएं कोने से नीचे दाएं कोने तक एक पथ खोजें जो इसके पथ के साथ सभी संख्याओं के योग को कम करता है। आंदोलन किसी भी समय केवल नीचे या दाएं हो सकते हैं। तो उदाहरण के लिए, यदि मैट्रिक्स नीचे जैसा है

1 3 1
1 5 1
4 2 1

आउटपुट 7 होगा, पथ 1,3,1,1,1 होगा, इससे योग कम हो जाएगा

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

  • a:=पंक्तियों की संख्या, b:=स्तंभों की संख्या

  • मैं :=a – 1, j :=b-1

  • जबकि j>=0

    • मैट्रिक्स [ए, जे]:=मैट्रिक्स [ए, जे] + मैट्रिक्स [ए, जे + 1]

    • j को 1 से घटाएं

  • जबकि मैं>=0

    • मैट्रिक्स [i, b]:=मैट्रिक्स [i, b] + मैट्रिक्स [i + 1, b]

    • मैं 1 से घटाता हूं

  • j :=b - 1 और i :=row - 1

  • जबकि मैं>=0

    • जबकि j>=0

      • मैट्रिक्स [i, j]:=मैट्रिक्स [i, j] + न्यूनतम मैट्रिक्स [i, j + 1] और मैट्रिक्स [i + 1, j]

      • j को 1 से घटाएं

    • जे:=बी - 1

    • मैं :=मैं - 1

  • रिटर्न मैट्रिक्स[0, 0]

उदाहरण

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

class Solution(object):
   def minPathSum(self, grid):
      """
      :type grid: List[List[int]]
      :rtype: int
      """
      row = len(grid)-1
      column = len(grid[0])-1
      i=row-1
      j=column-1
      while j>=0:
         grid[row][j]+=grid[row][j+1]
         j-=1
      while i>=0:
         grid[i][column]+=grid[i+1][column]
         i-=1
      j=column-1
      i = row-1
      while i>=0:
         while j>=0:
         grid[i][j] += min(grid[i][j+1],grid[i+1][j])
         j-=1
      j=column-1
      i-=1
   return(grid[0][0])

इनपुट

[[1,3,1],[1,5,1],[4,2,1]]

आउटपुट

7

  1. सी++ में पथ योग III

    मान लीजिए कि हमने एक बाइनरी ट्री दिया है जिसमें प्रत्येक नोड में एक पूर्णांक कुंजी होती है। हमें उन पथों को खोजना है जो किसी दिए गए मान के योग हैं। रास्ता जड़ से पत्ती तक शुरू होना चाहिए। हमें वह रास्ता खोजना होगा जहां योग समान हो। अगर पेड़ [5,4,8,11,null,13,4,7,2,null,null,5,1] जैसा है, और योग 22

  1. सी ++ में विभाज्य योग?

    यहाँ हम देखेंगे कि विभाज्य योग क्या है? n का विभाज्य योग n को छोड़कर n के सभी पूर्ण गुणनखंडों का योग है। उदाहरण के लिए, यदि संख्या 20 है, तो पूर्ण गुणनखंड (1, 2, 4, 5, 10) हैं। तो विभाज्य योग 22 है। एक दिलचस्प तथ्य यह है कि, यदि किसी संख्या का विभाज्य योग ही वह संख्या है, तो वह संख्या एक पूर्ण संख्

  1. पायथन में न्यूनतम पथ योग

    मान लीजिए कि हमारे पास गैर-ऋणात्मक पूर्णांकों से भरा एक m x n मैट्रिक्स है, तो ऊपरी बाएं कोने से नीचे दाएं कोने तक एक पथ खोजें जो इसके पथ के साथ सभी संख्याओं के योग को कम करता है। आंदोलन किसी भी समय केवल नीचे या दाएं हो सकते हैं। तो उदाहरण के लिए, यदि मैट्रिक्स नीचे जैसा है 1 3 1 1 5 1 4 2 1 आ