ठीक है कहें कि आपके पास इस तरह का ग्रिड है

xxxxSxxx
xxxxSSxx
xxxSSSxx
xxSSxSSx
xxxxxxxx
xxxxxxxx
xxxxxxxx
xxxxxxxx

जहां एक्स गैर मेल खाने वाले आसन्न प्रतीक हैं और एस मेल खाने वाले हैं, मिलान करने वाले लोगों को खोजने के लिए कोई कैसे गुजरेगा? यह जानने के लिए कि वे अच्छे तरीके से मेल खा रहे हैं? मैं ऊपर-बाएँ से ऊपर-नीचे जाने के बारे में सोच रहा था कि दाएँ और नीचे से सटे हुए की तुलना करें, लेकिन यह एक समस्या बन जाती है जब यह नीचे जाता है और फिर बाईं ओर मेल खाता है। इसमें जोड़ने के लिए किसी भी मार्गदर्शन की बहुत सराहना की जाती है। एक से अधिक क्लस्टर हो सकते हैं और केवल एक निश्चित राशि होने पर ही यह 5+ आसन्न की तरह गिना जाता है अन्यथा अनदेखा करें

0
novafluff 15 अप्रैल 2020, 20:57

1 उत्तर

सबसे बढ़िया उत्तर

यह मानते हुए कि s का केवल एक क्लस्टर है और ग्रिड 2D मैट्रिक्स में संग्रहीत है।

आप एक नया 2D मैट्रिक्स बना सकते हैं और फिर मूल ग्रिड में प्रत्येक तत्व पर जा सकते हैं। यदि यह आसन्न तत्वों में से कम से कम एक के बराबर है (ग्रिड के किनारों पर तत्वों की तुलना करते समय सावधान रहें ताकि आप ग्रिड से बाहर न जाएं) तो इसके स्थान को चिह्नित करें (इसकी x और y) नए मैट्रिक्स में 1 के रूप में। यदि यह आसन्न तत्वों में से किसी के बराबर नहीं है, तो नए मैट्रिक्स में इसकी स्थिति को 0 से चिह्नित करें।

जब आपका हो जाए। वे स्थान जहाँ आपके पास नए मैट्रिक्स में 1s हैं, वे स्थान हैं जहाँ आपके पास पुराने मैट्रिक्स में s हैं।

संपादित करें: टिप्पणी में नई समस्या का समाधान।

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

जब आप प्रत्येक बीएफएस खोज शुरू करते हैं तो इस बात का हिसाब रखें कि आपने अब तक कितने तत्वों का दौरा किया है। जब वे आपकी दहलीज को पार करते हैं। बीएफएस की संख्या को एक सरणी या विजेता में रखें। इस तरह जब आप कर रहे हैं। आप इस वेक्टर में जाते हैं, इसमें प्रत्येक संख्या प्रतीक का एक समूह है जो आपके पास की दहलीज से ऊपर है।

उदाहरण के लिए आप अपने वेक्टर में 3 देखते हैं और आप क्लस्टर नंबर 3 के स्थानों को जानना चाहते हैं आप नए 2D ग्रिड पर जा सकते हैं और नंबर 3 के साथ पहले तत्व की तलाश कर सकते हैं और यह जानने के लिए बीएफएस खोज शुरू कर सकते हैं कि यह दोस्त कहां हैं .

1
Mahmood Darwish 15 अप्रैल 2020, 18:58