Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> प्रोग्रामिंग

बाढ़ भरण एल्गोरिथ्म


एक मैट्रिक्स दिया गया है; मैट्रिक्स एक स्क्रीन का प्रतिनिधित्व कर रहा है। स्क्रीन के प्रत्येक तत्व (i, j) को एक पिक्सेल के रूप में दर्शाया जाता है, उस पिक्सेल के रंग को अलग-अलग संख्याओं से चिह्नित किया जाता है। इस एल्गोरिथम में, पिक्सेल पहले से चयनित पिछले रंग में होने पर नए रंग से भर जाएंगे। यदि पिछला रंग पिछला रंग नहीं है, तो वह पिक्सेल नहीं भरा जाएगा। एक पिक्सेल भरने के बाद, वह ऐसा करने के लिए अपने ऊपर, नीचे, बाएँ और दाएँ पिक्सेल की जाँच करेगा।

विचार वास्तव में सरल है, पहले, हम जांचते हैं कि चयनित स्थिति पिछले रंग से रंगीन है या नहीं, नहीं, एल्गोरिदम काम नहीं करेगा। अन्यथा, यह उस पिक्सेल को नए रंग से भर देगा और उसके चार पड़ोसियों के लिए फिर से आ जाएगा।

इनपुट और आउटपुट

इनपुट:स्क्रीन मैट्रिक्स:1 1 1 1 1 1 1 11 1 1 1 1 1 0 01 0 0 1 1 0 1 11 2 2 2 0 1 01 1 1 2 2 0 1 01 1 1 2 2 2 2 01 1 1 1 1 2 1 11 1 1 1 1 2 2 1 आउटपुट:बाढ़ भरने के बाद स्क्रीन मैट्रिक्स 1 1 1 1 1 1 1 11 1 1 1 1 1 0 01 0 1 1 0 1 11 3 3 3 0 1 01 1 1 3 3 0 1 01 1 1 3 3 3 3 01 1 1 1 1 3 1 11 1 1 1 1 3 3 1

एल्गोरिदम

fillScreen(x, y, prevColor, newColor)

इनपुट: (x,y) प्रारंभ, पिछले रंग और नए रंग के लिए समन्वयित करता है।

आउटपुट - यदि संभव हो तो रंग को पिछले से नए में बदलने के बाद स्क्रीन करें।

शुरू करें अगर (x, y) स्क्रीन रेंज में नहीं है, तो वापस लौटें यदि (x, y) का रंग prevColor, तो रिटर्न स्क्रीन [x, y] :=newColor fillScreen(x+1, y, prevColor, newColor) fillScreen(x-1, y, prevcolor, newColor) fillScreen(x, y+1, prevcolor, newcolor) fillScreen(x, y-1, prevcolor, newcolor)End

उदाहरण

#include#define M 8#define N 8 यूज़िंग नेमस्पेस एसटीडी;इंट स्क्रीन[एम][एन] ={//स्क्रीन डाइमेंशन और कलर्स {1, 1, 1, 1, 1, 1, 1 , 1}, {1, 1, 1, 1, 1, 1, 0, 0}, {1, 0, 0, 1, 1, 0, 1, 1}, {1, 2, 2, 2, 2 , 0, 1, 0}, {1, 1, 1, 2, 2, 0, 1, 0}, {1, 1, 1, 2, 2, 2, 2, 0}, {1, 1, 1 , 1, 1, 2, 1, 1}, {1, 1, 1, 1, 1, 2, 2, 1}}; शून्य भरणस्क्रीन (int x, int y, int prevcolor, int newcolor) {// बदलें (x, y) का पिछला रंग, नए रंग के साथ अगर (x <0 || x>=M || y <0 || y>=N) // जब बिंदु स्क्रीन रिटर्न से अधिक हो जाता है; अगर (स्क्रीन [x] [y]! =prevColor) // यदि बिंदु (x, y) में prevcolor नहीं है, तो कुछ भी वापस न करें; स्क्रीन [एक्स] [वाई] =नया रंग; // कलर फिलस्क्रीन अपडेट करें (x+1, y, prevColor, newColor); // (x, y) फिलस्क्रीन (x-1, y, prevColor, newColor) के अधिकार के लिए; // (x, y) fillScreen (x, y+1, prevColor, newColor) के बाईं ओर; // (x, y) फिलस्क्रीन (x, y-1, prevColor, newColor) के शीर्ष के लिए; // (x, y)} के नीचे के लिए बाढ़ भरें (int x, int y, int newColor) { int prevColor =स्क्रीन [x] [y]; // नया रंग भरने से पहले रंग लें (x, y, prevColor, newColor);}int main() {int x =4, y =4, newColor =3; cout <<"पिछली स्क्रीन:"< 

आउटपुट

<पूर्व>पिछली स्क्रीन1 1 1 1 1 1 1 11 1 1 1 1 0 01 0 0 1 1 0 1 11 2 2 2 2 0 1 01 1 1 2 2 0 1 01 1 1 2 2 2 2 01 1 1 1 1 2 1 11 1 1 1 1 2 2 1अपडेटेड स्क्रीन:1 1 1 1 1 1 11 1 1 1 1 1 0 01 0 1 1 0 1 11 3 3 3 3 0 1 01 1 1 3 3 0 1 01 1 1 3 3 3 3 01 1 1 1 1 3 1 11 1 1 1 1 3 3 1

  1. फोर्ड फुलकर्सन एल्गोरिथम

    फोर्ड-फुलकर्सन एल्गोरिथम का उपयोग किसी दिए गए ग्राफ में प्रारंभ शीर्ष से सिंक शीर्ष तक अधिकतम प्रवाह का पता लगाने के लिए किया जाता है। इस ग्राफ में हर किनारे की क्षमता है। स्रोत और सिंक नाम के दो शीर्ष दिए गए हैं। स्रोत शीर्ष में सभी बाहरी किनारे हैं, कोई अंदरूनी किनारा नहीं है, और सिंक में सभी अंदर

  1. फ्लोयड वारशाल एल्गोरिथम

    Floyd-Warshall एल्गोरिदम का उपयोग किसी दिए गए भारित ग्राफ से सभी जोड़ी सबसे छोटी पथ समस्या को खोजने के लिए किया जाता है। इस एल्गोरिथम के परिणामस्वरूप, यह एक मैट्रिक्स उत्पन्न करेगा, जो ग्राफ़ में किसी भी नोड से अन्य सभी नोड्स के लिए न्यूनतम दूरी का प्रतिनिधित्व करेगा। सबसे पहले, आउटपुट मैट्रिक्स

  1. सी ग्राफिक्स का उपयोग करके बाढ़ भरण एल्गोरिदम

    अवधारणा किसी दिए गए आयत के संबंध में, हमारा कार्य बाढ़ भरण एल्गोरिथम लागू करके इस आयत को भरना है। इनपुट rectangle(left = 50, top = 50, right= 100, bottom = 100) floodFill( a = 55, b = 55, NewColor = 12, OldColor = 0) आउटपुट विधि // पिछले रंग OldColor को (a, b) पर और (a, b) के आसपास के सभी पि