কম্পিউটার টিউটোরিয়াল

পাইথনে মিনিমাম পাথ সম বের করুন

একটি m x n ম্যাট্রিক্স দেওয়া আছে যাতে নন-নেগেটিভ ইন্টিজার আছে। টপ-লেফ্ট থেকে বটম-রাইট পর্যন্ত এমন একটি পাথ বের করতে হবে যাতে পাথে পড়া সব সংখ্যার যোগফল ন্যূনতম হয়। মুভমেন্ট শুধু ডাউন বা রাইট হতে পারে।

ম্যাট্রিক্স: 1 3 1 1 5 1 4 2 1 আউটপুট 7, পাথ: 1,3,1,1,1।

সমাধানের ধাপসমূহ

  • row := রো সংখ্যা, column := কলাম সংখ্যা
  • i := row-1, j := column-1
  • লাস্ট রো এবং লাস্ট কলাম প্রিপ্রসেস করুন (কামুলেটিভ সম)
  • বাকি সেলগুলোতে: matrix[i][j] += min(matrix[i][j+1], matrix[i+1][j])
  • matrix[0][0] রিটার্ন

উদাহরণ

class Solution(object):
    def minPathSum(self, grid):
        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]

ob1 = Solution()
print(ob1.minPathSum([[1,3,1],[1,5,1],[4,2,1]]))

ইনপুট

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

আউটপুট

7
  1. পাইথনে বাইনারি ট্রি ম্যাক্সিমাম পাথ সাম

  2. পাইথনে বাইনারি ট্রিতে পাথ সাম (Path Sum)

  3. পাইথনে টু সাম (Two Sum)

  4. পাইথনে একটি সংখ্যার গুণনীয়গুলোর ন্যূনতম যোগফল বের করার প্রোগ্রাম