ধরুন আমাদের একটি 2D গ্রিড আছে, যেখানে স্ট্রিং "r", "g", এবং "b" হিসাবে রঙ রয়েছে। আমাদের কালার টার্গেট সহ সারি r, কলাম c-এ ফ্লাডফিল অপারেশন করতে হবে। আমরা জানি যে ফ্লাডফিল অপারেশনের সমস্ত উপাদানগুলিকে প্রতিস্থাপন করা উচিত যেগুলি উভয়ই গ্রিড[r,c] (উপর/ডান/নিচে/বাম) এর সাথে সংযুক্ত এবং লক্ষ্যের মতো একই রঙের সাথে গ্রিড[r,c] এর মতো একই রঙ রয়েছে।
সুতরাং, যদি ইনপুট মত হয়
R | R | R |
R | G | B |
G | B | B |
তাহলে আউটপুট হবে
G | G | G |
G | G | B |
G | B | B |
যেহেতু গ্রিড[0,0]-এর সাথে সংযুক্ত লাল কোষগুলিকে সবুজ ("g") দিয়ে প্রতিস্থাপিত করা হয়।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- দেখা একটি নতুন সেট সংজ্ঞায়িত করুন
- পুরানো রং :=ম্যাট্রিক্স[r, c]
- একটি ফাংশন dfs() সংজ্ঞায়িত করুন। এর জন্য i, j লাগবে
- যদি ম্যাট্রিক্সে i এবং j থাকে এবং (i, j) দেখা না হয় এবং ম্যাট্রিক্স[i, j] পুরানো রঙের মতো হয়, তাহলে
- দেখার যোগ(i, j)
- ম্যাট্রিক্স[i, j] :=টার্গেট
- dfs(i + 1, j)
- dfs(i, j + 1)
- dfs(i, j - 1)
- dfs(i - 1, j
- প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -
- dfs(r, c)
- রিটার্ন ম্যাট্রিক্স
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, matrix, r, c, target): def dfs(i, j): if ( i >= 0 and i < len(matrix) and j >= 0 and j < len(matrix[0]) and (i, j) not in seen and matrix[i][j] == oldcolor ): seen.add((i, j)) matrix[i][j] = target dfs(i + 1, j) dfs(i, j + 1) dfs(i, j - 1) dfs(i - 1, j) seen = set() oldcolor = matrix[r][c] dfs(r, c) return matrix ob = Solution() matrix = [ ["r", "r", "r"], ["r", "g", "b"], ["g", "b", "b"] ] r = 0 c = 0 target = "g" print(ob.solve(matrix, r, c, target))
ইনপুট
matrix = [ ["r", "r", "r"], ["r", "g", "b"], ["g", "b", "b"] ] r = 0 c = 0 target = "g"
আউটপুট
[ ['g', 'g', 'g'], ['g', 'g', 'b'], ['g', 'b', 'b']]