मान लीजिए कि हमारे पास एक 2D ग्रिड है, जिसमें रंग "r", "g", और "b" के रूप में हैं। हमें रंग लक्ष्य के साथ पंक्ति r, कॉलम c पर फ्लडफिल ऑपरेशन करना है। जैसा कि हम जानते हैं कि फ्लडफिल ऑपरेशन को उन सभी तत्वों को प्रतिस्थापित करना चाहिए जो दोनों ग्रिड से जुड़े हैं [आर, सी] (ऊपर/दाएं/नीचे/बाएं) और ग्रिड के समान रंग [आर, सी] लक्ष्य के समान रंग के साथ हैं।पी>
तो, अगर इनपुट पसंद है
आर | आर | आर |
आर | जी | बी |
जी | बी | बी |
तो आउटपुट होगा
जी | जी | जी |
जी | जी | बी |
जी | बी | बी |
चूंकि ग्रिड से जुड़ी लाल कोशिकाओं [0,0] को हरे ("g") से बदल दिया जाता है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- देखे गए नए सेट को परिभाषित करें
- पुराना रंग:=मैट्रिक्स[आर, सी]
- एक फ़ंक्शन को परिभाषित करें dfs() । यह ले जाएगा मैं, जे
- यदि 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']]