एल्गोरिथ्म: निर्धारित दो क्षेत्रों एक मनमाना पथ द्वारा पृथक किए गए के आकार, और फिर एक को भरने

वोट
2

नोट: यह जो तर्क समस्याओं, आदि पसंद करती है किसी को भी के लिए एक चुनौतीपूर्ण समस्या है

ऊंचाई एच और चौड़ाई डब्ल्यू का एक आयताकार दो आयामी ग्रिड ग्रिड पर हर जगह पर विचार करें या तो एक मूल्य है, 0 1या 2। प्रारंभ में, ग्रिड पर हर जगह एक है 0चार किनारों में से प्रत्येक के साथ रिक्त स्थान है, जो शुरू में एक हैं के अलावा, 2

फिर आसन्न (क्षैतिज या अनुलंब) ग्रिड रिक्त स्थान की एक मनमाना पथ पर विचार करें। पथ एक को शुरू होता है 2और एक अलग पर समाप्त होता है 2। मार्ग के किनारे हर जगह एक है 1

पथ दो की क्षेत्रों में ग्रिड बांटता 0रिक्त स्थान। वहाँ एक उद्देश्य यह है कि एक अनिर्दिष्ट पर टिकी हुई है है 0अंतरिक्ष। क्षेत्र उस वस्तु शामिल नहीं है पूरी तरह से साथ भरा होना चाहिए 2

एक एल्गोरिथ्म है कि रिक्त स्थान है कि बन जाना चाहिए निर्धारित करता है परिभाषित 2से 0, एक सरणी (सूची) दिए गए मूल्यों की ( 0, 1, या 2) है कि ग्रिड में मूल्यों के अनुरूप है, ऊपर से नीचे तक जा रहा है और फिर बाएं से दाएं। दूसरे शब्दों में, सरणी में सूचकांक 0 पर तत्व ग्रिड में ऊपरी-बाएं अंतरिक्ष के मूल्य (शुरू में एक होता है 2)। इंडेक्स को 1 पर तत्व ग्रिड बाएँ कॉलम में यह है कि, दूसरा ऊपर से, और इसके आगे में अंतरिक्ष के मूल्य में शामिल है। सूचकांक एच पर तत्व शीर्ष पंक्ति में लेकिन बाएं से दूसरे यह है कि, और इसके आगे ग्रिड में अंतरिक्ष के मूल्य में शामिल है।

एक बार जब एल्गोरिथ्म खत्म और खाली क्षेत्र के साथ पूरी तरह से भर जाता है 2है, वही एल्गोरिथ्म एक ही प्रक्रिया फिर से करने के लिए पर्याप्त होना चाहिए। दूसरी (और पर) समय, मार्ग अभी भी एक से ली गई है 2एक अलग करने के लिए 2, के रिक्त स्थान भर में 0है, लेकिन ग्रिड छोटा है, क्योंकि 2रों कि अन्य से घिरे रहे हैं 2रों (पथ से छुआ नहीं जा सकता क्योंकि मार्ग है के रिक्त स्थान के साथ 0)।

मैं धन्यवाद मेरे लिए यह पता लगाने की, बहुत बहुत सक्षम है जिसे। यह एक विशेष प्रोग्रामिंग भाषा में होना जरूरी नहीं है; वास्तव में, छद्म कोड या सिर्फ अंग्रेजी पर्याप्त है। एक बार फिर धन्यवाद! यदि आप कोई प्रश्न हैं, तो बस एक टिप्पणी छोड़ दो और मैं क्या निर्दिष्ट करने की आवश्यकता है निर्दिष्ट करते हैं।

15/05/2010 को 22:07
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
3

मेरे लिए एक बुनियादी लगता है बाढ़ भरण एल्गोरिथ्म काम किया जायेगा:

  • पहले के लिए अपने सरणी के लिए स्कैन 0आप पाते हैं, और फिर वहाँ से एक बाढ़ भरने शुरू करते हैं, भरने 0कुछ अन्य संख्या के साथ क्षेत्र, मान लें कि 3- यह अपने "क्षेत्रों" में से एक लेबल होगा।
  • एक बार यह हो, एक के लिए फिर से स्कैन 0, और बाढ़ वहां से भरने, एक साथ भरने 4इस बार।
  • भरण के दोनों के दौरान, आप क्या आप अपने वस्तु या नहीं मिला जाँच जा सकता है; के दौरान यह पता चलता है, कि संख्या का ट्रैक रखने को भरने जो भी।
  • बाद दोनों भरण किया जाता है, की जांच में यह वस्तु थी जो गिने क्षेत्र - बाढ़ है कि इस क्षेत्र में फिर से भरने, के साथ वापस 0इस बार।
  • बाढ़ के साथ अन्य गिने क्षेत्र को भरने 2, और आप काम हो गया।

यह किसी भी ग्रिड विन्यास के लिए, जब तक कि वहाँ ठीक दो हैं काम करेंगे 0क्षेत्रों है कि एक दूसरे से डिस्कनेक्ट हो जाते हैं; इसलिए एक ही एल्गोरिथ्म पुनः आवेदन कितनी भी बार ठीक है।

संपादित करें: माइनर में तोड़ मरोड़, आप को बचाने के लिए एक बाढ़ भरण या दो -

  • आप पहली बार बाढ़ भरण में अपनी वस्तु नहीं मिल रहा है, तो आप यह मान सकते हैं अन्य क्षेत्र यह है कि, तो आप सिर्फ साथ वर्तमान संख्या को फिर से भरने 2और अन्य क्षेत्र अकेला छोड़ दो (क्योंकि यह पहले से ही है 0-filled)।
  • वैकल्पिक रूप से, अगर आप ऐसा पहले बाढ़ भरण में वस्तु मिल जाए, तो आप सीधे के साथ अन्य क्षेत्र भर सकते हैं 2, और फिर साथ पहले सेक्टर फिर से भरने 0
15/05/2010 को 22:23
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more