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

পাইথনে মেজ গ্রিডে টপ-লেফট থেকে বটম-রাইটে যাওয়ার ন্যূনতম পথ (BFS)

এক ২D মেজ গ্রিড: ০=খালি পথ, ১=উত্তাল। [0,0] থেকে [R-1, C-1] পর্যন্ত যাওয়ার ন্যূনতম স্টেপ (সেল সংখ্যা) বের করতে হবে। না পেলে -1।

উদাহরণ: [[0,0,0],[1,0,0],[1,0,0]] → আউটপুট 5।

BFS সমাধান (শর্টেস্ট পথ অন ওয়েটেড গ্রাফ)

  • কিউতে (row, col, distance) স্টোর করুন।
  • ভিজিটেড সেলকে ১ করে মার্ক করুন (ভিজিটেড সেট আলাদা রাখা যাবে)।
  • ৪ ডিরেকশন এক্সপ্লোর করুন।
  • ডেস্টিনেশন পাওয়া গেলে ডিস্ট্যান্স রিটার্ন।

পাইথন কোড

class Solution:
    def solve(self, A):
        R, C = len(A), len(A[0])
        q = [(0, 0, 1)] if not A[0][0] else []
        A[0][0] = 1  # ভিজিটেড মার্ক
        
        for r, c, d in q:
            if (r, c) == (R-1, C-1):
                return d
            for x, y in [(r+1,c), (r-1,c), (r,c+1), (r,c-1)]:
                if 0 <= x < R and 0 <= y < C and A[x][y] == 0:
                    A[x][y] = 1
                    q.append((x, y, d+1))
        return -1

ob = Solution()
grid = [[0,0,0], [1,0,0], [1,0,0]]
print(ob.solve(grid))  # 5

টাইম কমপ্লেক্সিটি: O(R×C), স্পেস: O(R×C)। স্ট্যান্ডার্ড BFS শর্টেস্ট পথ অ্যালগরিদম।

  1. Python দিয়ে সব নোডে পৌঁছাতে মিনিমাম ভার্টেক্স বের করার প্রোগ্রাম

  2. পাইথনে রঙ মার্জ করলে অবশিষ্ট ন্যূনতম রঙের সংখ্যা বের করার প্রোগ্রাম

  3. পাইথনে সব গাছ জ্বলে যাওয়ার জন্য কত দিন লাগবে তা বের করার প্রোগ্রাম

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