इस समस्या में, हमें 2-डी स्क्रीन का प्रतिनिधित्व करने वाला एक 2d सरणी दिया जाता है, स्क्रीन पर एक पिक्सेल के निर्देशांक रंग और रंग से भरे होते हैं। हमारा काम वर्तमान पिक्सेल और उस रंग वाले सभी आसन्न पिक्सेल को रंगने के लिए एक प्रोग्राम बनाना है।
पेंट में रंगना , हम एक रंग का चयन करेंगे और दिए गए पिक्सेल पर ब्रश से क्लिक करेंगे।
समस्या को समझने के लिए एक उदाहरण लेते हैं
इनपुट:सीन [] [] ={{डब्ल्यू, डब्ल्यू, बी, डब्ल्यू, डब्ल्यू, डब्ल्यू, डब्ल्यू, डब्ल्यू}, {डब्ल्यू, डब्ल्यू, डब्ल्यू, डब्ल्यू, डब्ल्यू, डब्ल्यू, बी, बी}, {डब्ल्यू , बी, बी, डब्ल्यू, डब्ल्यू, बी, डब्ल्यू, डब्ल्यू}, {डब्ल्यू, वाई, वाई, वाई, वाई, बी, डब्ल्यू, बी}, {बी, डब्ल्यू, डब्ल्यू, वाई, वाई, बी, डब्ल्यू, बी },{बी, डब्ल्यू, डब्ल्यू, वाई, वाई, वाई, वाई, बी}, {डब्ल्यू, बी, डब्ल्यू, डब्ल्यू, डब्ल्यू, वाई, डब्ल्यू, डब्ल्यू}, {डब्ल्यू, डब्ल्यू, बी, बी, डब्ल्यू, वाई , वाई, डब्ल्यू}}; एक्स =5, वाई =5, नया रंग =आर। आउटपुट:{{डब्ल्यू, डब्ल्यू, बी, डब्ल्यू, डब्ल्यू, डब्ल्यू, डब्ल्यू, डब्ल्यू}, {डब्ल्यू, डब्ल्यू, डब्ल्यू, डब्ल्यू, डब्ल्यू , डब्ल्यू, बी, बी}, {डब्ल्यू, बी, बी, डब्ल्यू, डब्ल्यू, बी, डब्ल्यू, डब्ल्यू}, {डब्ल्यू, आर, आर, आर, आर, बी, डब्ल्यू, बी}, {बी, डब्ल्यू, डब्ल्यू , आर, आर, बी, डब्ल्यू, बी}, {बी, डब्ल्यू, डब्ल्यू, आर, आर, आर, आर, बी}, {डब्ल्यू, बी, डब्ल्यू, डब्ल्यू, डब्ल्यू, आर, डब्ल्यू, डब्ल्यू}, {डब्ल्यू , डब्ल्यू, बी, बी, डब्ल्यू, आर, आर, डब्ल्यू}};
बाढ़ भरण एल्गोरिथम
इस एल्गोरिथम में, पिक्सेल पहले से चयनित पिछले रंग में होने पर नए रंग से भर जाएंगे। यदि पिछला रंग पिछला रंग नहीं है, तो वह पिक्सेल नहीं भरा जाएगा। एक पिक्सेल भरने के बाद, वह ऐसा करने के लिए अपने ऊपर, नीचे, बाएँ और दाएँ पिक्सेल की जाँच करेगा। यहां और जानें।
समाधान दृष्टिकोण
समस्या को हल करने का एक तरीका पुनरावर्ती दृष्टिकोण का उपयोग करना है। हमें पहला पिनल मिलेगा जिसे हमें रंगने की जरूरत है और फिर उसके सभी 4 पड़ोसी पिक्सल की जांच करें। उसी रंग का फ़िट करें फिर इसे नए रंग से बदलें और वर्तमान पिक्सेल के पड़ोसियों के साथ दोहराएं। यदि पड़ोसी पिक्सेल किसी भिन्न रंग का है, तो उसे छोड़ दें। इन चरणों का पालन करें जब तक कि आप सभी आसन्न पिनल्स को एक ही रंग के साथ प्राप्त नहीं कर लेते हैं जैसे कि शुरुआती पिक्सेल रंगीन होते हैं। फिर फिलिंग एल्गोरिथम को रोकें।
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम
#includeनेमस्पेस का उपयोग करना;#परिभाषित करें M 8#परिभाषित करें N 8void fillColorAdj(char Screen[][N], int x, int y, char oldColor, char color){ if (x <0 || एक्स>=एम || वाई <0 || वाई>=एन) वापसी; अगर (स्क्रीन [एक्स] [वाई]! =पुराना रंग) वापसी; अगर (स्क्रीन [x] [y] ==रंग) वापसी; स्क्रीन [एक्स] [वाई] =रंग; fillColorAdj (स्क्रीन, x+1, y, पुराना रंग, रंग); fillColorAdj (स्क्रीन, x-1, y, पुराना रंग, रंग); fillColorAdj (स्क्रीन, x, y+1, पुराना रंग, रंग); fillColorAdj (स्क्रीन, x, y-1, पुराना रंग, रंग);} शून्य भरण रंग (चार स्क्रीन [][एन], int x, int y, चार रंग) {चार पुराना रंग =स्क्रीन [x] [y]; अगर (पुराना रंग ==रंग) वापसी; fillColorAdj(स्क्रीन, x, y, OldColor, color);}int main(){ चार स्क्रीन[M][N] ={{'W', 'W', 'B', 'W', 'W', 'डब्ल्यू', 'डब्ल्यू', 'डब्ल्यू'}, {'डब्ल्यू', 'डब्ल्यू', 'डब्ल्यू', 'डब्ल्यू', 'डब्ल्यू', 'डब्ल्यू', 'बी', 'बी'}, {'डब्ल्यू ', 'बी', 'बी', 'डब्ल्यू', 'डब्ल्यू', 'बी', 'डब्ल्यू', 'डब्ल्यू'}, {'डब्ल्यू', 'वाई', 'वाई', 'वाई', 'वाई' ', 'बी', 'डब्ल्यू', 'बी'}, {'बी', 'डब्ल्यू', 'डब्ल्यू', 'वाई', 'वाई', 'बी', 'डब्ल्यू', 'बी'}, { 'बी', 'डब्ल्यू', 'डब्ल्यू', 'वाई', 'वाई', 'वाई', 'वाई', 'बी'}, {'डब्ल्यू', 'बी', 'डब्ल्यू', 'डब्ल्यू', 'डब्ल्यू', 'वाई', 'डब्ल्यू', 'डब्ल्यू'}, {'डब्ल्यू', 'डब्ल्यू', 'बी', 'बी', 'डब्ल्यू', 'वाई', 'वाई', 'डब्ल्यू'} ,}; इंट एक्स =5, वाई =5; चार रंग ='आर'; cout<<"प्रारंभिक स्क्रीन निर्देशांक हैं:\n"; for (int i=0; i आउटपुट
प्रारंभिक स्क्रीन कॉर्डिनेट हैं:डब्ल्यू डब्ल्यू बी डब्ल्यू डब्ल्यू डब्ल्यू डब्ल्यू डब्ल्यू डब्ल्यू डब्ल्यू डब्ल्यू डब्ल्यू डब्ल्यू बी बी बी डब्ल्यू बी डब्ल्यू डब्ल्यू बी डब्ल्यू डब्ल्यू डब्ल्यू वाई वाई वाई बी डब्ल्यू डब्ल्यू बी डब्ल्यू डब्ल्यू डब्ल्यू वाई वाई बी डब्ल्यू बीबी डब्ल्यू वाई वाई वाई वाई बीडब्ल्यू बी डब्ल्यू डब्ल्यू डब्ल्यू डब्ल्यू डब्ल्यू डब्ल्यू बी बी डब्ल्यू वाई वाई डब्ल्यू रंग के बाद स्क्रीन कॉर्डिनेट हैं: